列表推导式
作用:用一个表达式创建一个有规律的列表或控制一个有规律列表
列表推导式又叫列表生成式
需求:创建一个0-10的列表
while循环实现
list = []
i = 0
while i < 10:
list.append(i)
i += 1
print(list)
输出:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for循环实现
list = []
for i in range(10):
list.append(i)
print(list)
输出:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
列表推导式实现
list = [ i for i in range(10) ]
print(list)
输出:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
带if的列表推导式
需求:创建0-10的偶数列表
range步长实现
list = [ i for i in range(0, 10, 2) ]
print(list)
输出:[0, 2, 4, 6, 8]
for循环+if实现
list1 = []
for i in range(10):
if i % 2 ==0:
list1.append(i)
print(list1)
输出:[0, 2, 4, 6, 8]
带if的列表推导式实现
list3 = [i for i in range(10) if i % 2 ==0]
print(list3)
输出:[0, 2, 4, 6, 8]
多个for循环实现列表推导式
需求:创建列表如下:
[(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
for嵌套实现
list = []
for i in range(1, 3):
for j in range(3):
list.append((i, j))
print(list)
输出:[(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
多个for循环实现列表推导式
list1 = [(i, j) for i in range(1, 3) for j in range(3)]
print(list1)
输出:[(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
字典推导式
需求:创建一个字典,key是1-5数字,value是这个数字的2次方
dic1 = {i: i **2 for i in range(1,5)}
print(dic1)
输出:{1: 1, 2: 4, 3: 9, 4: 16}
需求:将下列两个列表合并为一个字典
list1 = ['name', 'age', 'gender', 'id']
list2 = ['Lianglaifu', '1.5', '男']
list1 = ['name', 'age', 'gender']
list2 = ['Lianglaifu', '1.5', '男']
dict1 = {list1[i]: list2[i] for i in range(len(list2))}
print(dict1)
输出:{'name': 'Lianglaifu', 'age': '1.5', 'gender': '男'}
总结:
如果两个列表数据个数相同,len统计任何一个列表长度都可以
如果两个列表数据个数不同,len统计数据多的列表个数会报错,需要统计数据少的列表数据
提取字典中目标数据
需求:提取下述电脑中销售数量大于300的数据
counts = {'MBP': 999, 'HP': 199, 'DELL': 299, 'Lenovo':399}
counts = {'MBP': 999, 'HP': 199, 'DELL': 299, 'Lenovo':399}
cout1 = {key: value for key,value in counts.items() if value>=300}
print(cout1)
输出:{'MBP': 999, 'Lenovo': 399}
集合推导式
需求:创建一个集合,数据为下列列表的2次方
list1 = [1, 1, 2]
list1 = [1, 1, 2]
set1 = {i ** 2 for i in list1}
print(set1)
输出:{1, 4}
注意:集合有数据去重功能