XX学Python·总结和推导式
公共方法总结
-
+:有{}的都不行,即字典,集合
-
适用所有基础数据类型(int float bool),容器类型只有列表,元组,字符串
-
两侧要是同种数据类型
-
加法运算在容器类型中是拼接的意思
-
-
×:有{}不行,即字典,集合
-
适用所有基础数据类型(int float bool),容器类型只有列表,元组,字符串
-
容器类型只能与int类型相乘(乘负数和0就是空的容器)
-
乘法就是将容器类型复制指定次数,并进行拼接
-
a = '爱你'
print(a * 3) # 爱你爱你爱你
list1 = [1,2,3]
print(list1 * 2) # [1, 2, 3, 1, 2, 3]
print(list1 * 0) # []
print(list1 * -1) # []
-
in和not in
-
字符串,列表,元组,字典,集合都可以使用
-
判断元素是否在容器内,该元素必须能保存到容器内。比如列表、字典、集合本身都无法用集合储存,同样不能作为字典的键。
-
字典判断的是元素是否在key中,即是否为其中的键。
-
# 格式:元素 in 容器,返回布尔值
set1 = {3,'rose','jack'}
print(3 in set1) # True
print('rose' not in set1) # False
# 注意:判断的数据必须能够在集合中储存
# print([2,3] in set1) # TypeError: unhashable type: 'list'
-
切片
-
字符串,列表,元组可以切片,格式[起始位置:终止位置:步长]
-
集合和字典无法切片,因为不能使用索引获取数据
-
所有切片都不会修改原有数据,而是产生一个新的数据序列
-
-
len()
-
可以获得str,list,tuple,set中元素个数
-
获得dict中键值对个数
-
同等于:容器._ _ len _ (),比如print(len(list1)与print(list1. _ _ len _ _())相同
-
-
max min
list、tuple、set、str可以使用max min获取容器内最大最小值,例如print(max(list1))
dict是使用max和min获取键的最大最小值,例如print(max(dict1))
-
enumerate枚举
-
所有容器和可迭代类型都可以使用enumerate(数据,起始序号)。
-
获取容器里数据时添加序号,默认序号从0开始,此序号可以作为索引使用
-
一般用在 for 循环当中,是(序号,值)组成的元组
list1 = ['xx', 2, 'lsl'] for i in enumerate(list1): print(i) '''结果如下 (0, 'xx') (1, 2) (2, 'lsl') ''' for index,value in enumerate(list1): print(index, value, sep=':') # 用:进行分割 '''结果如下 0:xx 1:2 2:lsl ''' # 字典中获取的是key dict1 = {'name': 'xx', 'age': 18} for i in enumerate(dict1): print(i) # 如(0, 'name') for order_num, value in enumerate(dict1): # order_num序号的意思 print(order_num, value, sep=':') # 获取的key,如1:age set1 = {'xx', 520, 'lsl'} for order_num, value in enumerate(set1): print(order_num, value, sep=':') # 结果顺序不定
-
推导式
-
列表推导式:[要插入的值 for 临时变量 in 数据序列 if 条件]
-
集合推导式:
-
字典推导式:
-
所有推导式都可以用for循环改写,不熟练的时候可以采用
-
没有元组和字符串推导式,因为其内部元素无法被修改
# 获取0到9的数据序列
# 使用while循环
list1 = []
i = 0
while i < 10:
list1.append(i)
i += 1
print(list1) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 使用for循环
list2 = []
for i in range(0, 10):
list2.append(i)
print(list2) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 使用推导式
list3 = [i for i in range(10)]
print(list3) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 练习:使用推导式创建一个1-10的偶数数据序列
# 使用for
list4 = []
for i in range(1, 11):
if i % 2 == 0:
list4.append(i)
print(list4) # [2, 4, 6, 8, 10]
# 推导式,注意和上面的for循环结构对应。
list5 = [i for i in range(1, 11) if i % 2 == 0]
print(list5) # [2, 4, 6, 8, 10]
# 练习:用推导式打印九九乘法表,将所有算式放入列表中
# for循环打印没有放入列表中
for i in range(1,10):
for j in range(1,i+1):
print(f'{j}*{i}={i*j}', end=' ')
print()
# for循环打印放入列表中
list11 = []
for i in range(1,10):
for j in range(1,i+1):
list11.append(f'{j}*{i}={i*j}')
print(list11)
# 推导式
list6 = [f'{j}*{i}={i*j}' for i in range(1, 10) for j in range(1, i+1)]
print(list6)
# 集合推导式和列表相同
set1 = {i for i in range(1, 11) if i % 2 == 0}
print(set1) # {2, 4, 6, 8, 10}
# 字典推导式
keys = ['name', 'age']
values = ['xx', 18]
# 用for循环
dict1 = {}
for i in range(len(keys)):
dict1[keys[i]] = values[i]
print(dict1) # {'name': 'xx', 'age': 18}
# 用推导式
dict2 = {keys[i]: values[i] for i in range(len(keys))}
print(dict2) # {'name': 'xx', 'age': 18}