1.列表推导式
作用:用一个表达式创建一个有规律的列表或控制一个有规律的列表;列表推导式又叫列表生成式,化简代码
步骤:创建空列表,循环将有规律的数据写入到列表
案例:创建一个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(11):
list.append(i)
print(list)
#结果
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
直接在列表里写代码:
list=[i for i in range(11)] print(list) #结果 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
带if的列表推导式:
创建0-10的偶数列表:
#方法一:用range步长控制
list=[i for i in range(0,11,2)]
print(list)
#方法二:for循环
list=[]
for i in range(11):
if i%2==0: #余数为0
list.append(i)
print(list)
#方法三:while循环
list=[]
i=0
while i <11:
if i%2==0:
list.append(i)
i+=1
print(list)
#方法四:if实现
list=[i for i in range(11) if i%2==0] #条件为真,则输出左边
print(list)
#结果
[0, 2, 4, 6, 8, 10]
[0, 2, 4, 6, 8, 10]
[0, 2, 4, 6, 8, 10]
[0, 2, 4, 6, 8, 10]
多个for循环实现列表推导式:
如:创建列表如下:[(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)]
思路如下:设定i是在元组第一个数据1-2的范围,j是元组第二个数据0-3的范围
# 创建列表:[(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)]
list=[(i,j)for i in range(1,3) for j in range(3)]
print(list)
#结果
[(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
#for循环嵌套式:
# 创建列表:[(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)]
list=[]
for i in range(1,3):
for j in range(3):
list.append((i,j))
print(list)
2.字典推导式
字典推导式的作用:快速合并列表为字典或提取字典中目标数据。
案例1:字典key是1-5的数字,value是该数字的2次方
dict={i:i**2 for i in range(1,6) }
print(dict)
#结果
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
案例2:将两个列表合并为一个字典
list=['name','age','gender']
list1=['jack',10,'man']
dict={list[i]:list1[i] for i in range(len(list))}
print(dict)
#结果
{'name': 'jack', 'age': 10, 'gender': 'man'}
当两个列表的个数不一致时,如果range是在个数多的长度,那么会报错,如果range是列表个数少的那个长度,则会将合并成少个数的键值对,个数多的那个列表,截取到一致的长度。
list=['name','age','gender']
list1=['jack',10]
dict={list[i]:list1[i] for i in range(len(list1))}
print(dict)
#结果
{'name': 'jack', 'age': 10}#list1个数为2,所以截取list长度为2个的为止
#如果len(list)的话,则会报错
提取字典中的目标数据
案例3:提取值大于等于200的字段数据
#将键值对值大于等于200的数据提取出来
#步骤:先用items将所有的键值对提取出来,然后加个条件:value>=200
a={'TCL':101,'Hat':212,'redis':109,'node-red':204,'tomcat':79}
dict={key:value for key,value in a.items() if value>=200}
print(dict)
#结果
{'Hat': 212, 'node-red': 204}
3.集合推导式
创建一个集合,数据为下方列表的2次方
list=[1,1,3]
set={i**2 for i in list}
print(set)
#结果
{1, 9}



