5.1字符串和常用的数据结构(列表、元组、集合、字典)

本文介绍了Python中的字符串、列表、元组、集合和字典的基本使用方法。字符串是文本信息的表示,列表是有序可变序列,元组是不可变序列,更节省空间。集合是不允许重复元素的数据结构,支持交集、并集等运算。字典是由键值对组成的数据模型,遍历字典实际遍历其键。此外,还讲解了in和not运算符在列表、元组和字典中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字符串的使用

计算机中有许多数据都是以文本信息方式存在的 ,Python文本信息的方式就是以字符串类型表示的。

以下列举了字符串常用的使用方法:

str1 = 'hello,worle!'
#通过len函数计算字符串的长度
print(len(str1))	#输出为13
#输出字符串,并且首字母大写
print(str1.capitalize())	#输出为 Hello,world!
#输出字符串,并且所有字母都大写
print(str1.upper())		#输出为 HELLO,WORLD!
#查找字符串中子串的位置
print(str1.find('or'))		#输出为8
print(str1.find('shit'))	#输出为-1,代表此字符串中找不到shit
#index使用方法与find类似,但是找不到子串时会引发异常
print(str1.index('or'))
#检查字符串是否以指定字符串开头
print(str1.startswith('wo'))	#输出False
print(str1.startswith('hel'))	#输出True
#检查字符串是否以指定字符串结尾
print(str1.endswith('!'))		#输出True
#将字符串以指定的宽度剧中并在两侧填充指定的字符
print(str1.center(50,'*'))		#将center改为rjust时字符串靠右放置,左侧填充*
str2 = 'abcd123'
#从字符串中去除指定位置的字符(下标运算),下标是从0开始的
print(str2[3])		#输出d
#字符串切片,从x开始索引到y结束(前开后闭),z为步长(默认为1)
print(str2[x:y:z])	
print(str2[])		#完整切片
#检查字符串是否由数字构成
print(str2.isdigit())	#输出False
#检查字符串是否以字母构成	
print(str2.isalpha())	#输出False
#检查字符串是否以数字和字母构成
print(str2.isalnum())	#输出True	
#修建字符串左右两侧的空格
print(str2.strip())

列表的使用

列表是Python中内置有序可变序列,列表的所有元素放在一对中括号“[]”中,并使用逗号分隔开。
一个列表中的数据类型可以各不相同,可以同时分别为整数、实数、字符串等基本类型,甚至是列表、字典以及其他自定义类型的对象。

#定义列表
list1 = ['a','g',3,5]
list2 = ['hello'] * 3	#列表list2=['hello','hello','hello']
#计算列表的长度
print(len(list1))	#输出为4
#下标(索引)运算
print(list1[2[)		#输出为3
#添加元素
list2 += ['a','b']		#list2=['hello','hello','hello','a','b']
#删除元素
del list1[2]	#删除了list1列表的索引为2的元素
#清空列表元素
print(list1.clear())	#删除了list1列表里的所有元素

列表的切片:列表的切片和字符串切片大致相同

对列表的排序

list1 = ['orange', 'apple', 'zoo', 'internationalization', 'blueberry']
list2 = sorted(list1,reverse=True)		#severse可以等于True也可以等于false
list2 = sorted(list1,key = len)		#key可以指定排序方式根据字符串长度而非默认的字母表	

列表查找具体元素,与字符串查找方式不同,列表只能用index不能使用find

list1.index('orange')

用列表生成式语法创建列表

list1 = [x for x in range(1,10)]		#[1,2,3,4,5,6,7,8,9]
list1 = [x+y for x in 'abc' for y in '123']		#['a1', 'a2', 'a3', 'b1', 'b2', 'b3', 'c1', 'c2', 'c3']
print(sys.getsizeof(f))		#查看对象所占用内存的字节数

用这种语法创建列表之后元素已经准备就绪所以需要耗费较多的内存空间。
相比生成式生成器不占用存储数据的空间,通过生成器可以获取到数据但它不占用额外的空间存储数据,每次需要数据的时候就通过内部的运算得到数据(需要花费额外的时间)。

list1 = (x+y for x in 'abc' for y in '123')		#这是一个生成器对象

元组的使用

Python的元组与列表类似,不同之处在于元组的元素不能修改,而且元组在创建时间和占用空间上都要优于列表。

元组与列表之间的转换

list1 = ['a','f','e','3']
tuple1 = ('a','w','sf',34,53)
tuple2 = tuple(list1)		#将列表list1转换成元组
list2 = list(tuple1)		#将元组tuple1转换成列表

集合的使用

Python中的集合和数学上的集合时一致的,不允许有重复元素,而且可以进行交集、并集、差集等运算。

set1 = {1, 2, 3, 3, 3, 2}
set2 = set(range(1, 10))
# 集合的交集、并集、差集、对称差运算
print(set1 & set2)
print(set1 | set2)
print(set1 - set2)
print(set1 ^ set2)
# 判断子集和超集
print(set2 <= set1)
print(set3 <= set1)
print(set1 >= set2)
print(set1 >= set3)
#将元组转换为集合
set3 = set((1,2,3,4,5))

字典的使用

字典是另外一种可变容器模型,类似于我们生活中使用的字典,它可以存储任意类型对象,与列表、集合不同的时,字典的每一个元素都是由一个键和一个值组成的“键对值”,键和值通过冒号分开。

scores = {'姚智':190,'贾昊':160,'庞鸿飞':140}
#通过键可以获取字典中对应的值
print(scores('姚智'))		#输出190
#更新字典中的元素
scores['姚智'] = 230
#给字典添加元素
scores.update(郭强=150,刘强=180) 
#删除字典中的元素
'''随机返回并删除字典中的一对键和值(项)。为什么是随机删除呢?因为字典是无序的,没有所谓的“最后一项”或是其它顺序。
但是其实删除的就是我们看到的最后一项……'''
scores.popitem()	
#删除键为郭强的元素并返回值100
scores.pop('郭强'100)	
#清空字典
scores.clear()

对字典的遍历,其实是对键的遍历

scores = {'姚智':190,'贾昊':160,'庞鸿飞':140}
for i in scores:
	print(i)		#输出为姚智,贾昊,庞鸿飞
	print(scores[i])		#输出键对应的值

in与not运算符

in与not用于判断列表/元组/字典中是否有某一元素

mylist = [1,2,3,4,5]
print(1 in mylist)		#返回False
print(10 not in mylist)		#返回True
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值