目录
列表
- 列表的特点
用来储存多个数据的数据结构
储存的数据是有序的,可使用位置索引
列表长度和元素都是可变的
可储存不同类型的数据 - 列表的使用方法
创建列表:a=[1,2,3,4,5,6,[1,2]]
使用索引获取列表中的数据:x[0], x[2], x[-1], x[-3]
判断值是否存在于列表中:a=[1,2,3,4,5,6,[1,2]] print(1 in a)
元组
- 元组的特点
储存形式与列表相似
与列表不同的地方:元素不可修改,长度不可改变
常用于安全级别较高的场景应用 - 元组的使用方法
创建元组:
t1=(1, 2, 3, 4, 5)
t2=‘one’, 2, [3, 4], (5, 6)
t3=tuple([1,2,3])
切片
- [start:\end:step]
start:起始索引,从0开始,-1表示结束
end:结束索引
step:步长,步长为正时,从左向右取值。步长为负时,反向取值 - 对列表x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]切片
遍历列表/元组中的元素
for v in x:
print(v)
zip()函数
将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象
matrix = [[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11]]
//*matrix表示将matrix先拆开变成:[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11]
list(zip(*matrix)) # result: [(1, 5, 9), (2, 6, 10), (3, 7, 11)]
range类型
一段不可变的数字序列
经常被用作for里面来指定循环次数
- 创建range对象
range(start, stop, step)
start的默认值是0,step的默认值是1
- range类型也支持切片
- 使用for循环遍历range()
for v in range(10):
print(v)
列表、元组、range转换
- 列表转元组
t = tuple(l)# l是列表 - 元组转列表
l = list(t)# t是元组 - range转列表
l = list®# r是range - range转tuple
t = tuple®# r是range
pack&unpack
- pack
变量转换成序列
t = 1,2,3 #t是(1,2,3) - unpack
序列转换成变量
a,b,c=t #a=1,b=2,c=3 - unpack中使用*
a, b, *c = 1,2,3,4,5 # a=1, b=2, c=[3, 4, 5]
a, *b, c = 1,2,3,4,5 # a=1, b=[2, 3, 4], c=5
*a, b, c = 1,2,3,4,5 # a=[1, 2, 3], b=4, c=5
*a, b, c, d, e, f = 1,2,3,4,5 # a=[], b=1, c=2, d=3, e=4, f=5
在for循环中unpack元组
l = [(1,2), (3,4), (5,6)]
result=0
for x, y in l:
result += x*y
print(result)
可变序列支持的操作
Set(集合)
- 储存形式与列表相似
集合中保存的数据具有唯一性,不可重复
集合中保存的数据是无序的
往集合中添加重复数据,集合将只保留一个 - 创建一个集合
空集合:变量=set()
非空集合:变量={元素1,元素2,…} - 集合的并集
newSet = s1 | s2 | s3
newSet = s1.union(s2, s3) - 集合的交集
newSet = s1 & s2 & s3
newSet = s1.intersection(s2, s3) - 集合的差集
newSet = s1 - s2 - s3
newSet = s1.difference(s2, s3) - 判断是否是超集
s1.issuperset(s2) - 判断是否是子集
s2.issubset(s1) - 判断两个集合是否相交
s1.isdisjoint(s2)
字典(Dict)
通过键值对(key-value)来储存数据
储存的数据是无序的,可使用键索引
键是必须唯一,但值可以不唯一
键的类型只能是字符串、数字或元组,值可以是任何
- 字典操作
empty_dict = {}
dict_1 = {1:'one', 2:'two', 3:'three'}
dict_2 = dict(one=1, two=2, three=3)
- 获取字典中的值
x = d[1] #1是Key,不是索引
x = d['three']
x = d.get(3, 'This value when key is not found')
- 遍历字典
遍历字典的键
for k in x:
print(k)
遍历字典的值
for v in x:
print(v)
遍历字典的键值对
for k,v in x.items():
print(k,v)
字符串操作
三元表达式
效果等同于一个if…else语句
result=值1 if x<y else 值2
三元表达式示例:‘A’ if x%20 else ‘B’ if x%50 else ‘C’
列表生成式
字典生成式
{k:v for k,v in input if xxxx }
#将所有的key值变为大写
d = dict(a=1,b=2)
print({k.upper():v for k,v in d.items()})
#大小写key值合并, 统一以小写key值输出;
d = dict(a=2, b=1, c=2, B=9, A=5)
print({k.lower():d.get(k.lower(),0)+d.get(k.upper(),0) for k in d})
集合生成式
{v for v in input if xxxx}
#筛选字符串中的字母
{x for x in 'abracadabra' if x not in 'abc'}