作用:用一个表达式创建一个有规律的列表或控制一个有规律的列表。
列表推导式又叫列表生成式
快速体验
需求:创建一个0到10的列表
while循环实现
#1.准备一个空列表 list1 = [] #2.书写循环,依次追加数字到空列表list1中 i = 0 while i <10: list1.append(i) i +=1 print(list1)
for循环实现
list2 = [] for i in range(10): list2.append(i) print(list2)
列表推导式
生成指定范围的数值列表
list=[Expression for var in range]
- list: 表示生成的列表名称
- Expression: 表达式,用于计算新列表的元素
- var: 循环变量
- range: 采用range()函数生成range对象
实例:生成1到10乘以2的列表
l1 = [x * 2 for x in range(1,11)]
根据列表生成指定内容
newlist=[Expression for var in list]
- newlist: 表示新生成的列表名称
- Expressin: 表达式,用于计算新的列表的元素
- var: 变量,值为后面列表的每个元素值
- list: 用于生成新列表的原列表
实例:定义一个商品价格列表,然后应用列表推导式生成一个将全部商品价格打五折的列表
price=[1200,555,11,369,789,10000,4512,547,364] sale=[float(x*0.5) for x in price] print("原价格:",price) print("折后价:",sale)
带if的列表推导式
newlist=[Expression for var in list if condition]
- newlist: 表示新生成的列表名称
- Expression: 表达式,用于计算新列表的元素
- var: 变量,值为后面列表的每一个元素
- list: 用于生成新列表的原列表
- condition: 条件表达式,用于指定筛选条件
实例:定义一个记录商品价格的列表,然后应用列表推导式生成一个商品价格高于5000的列表
price=[12000,555,11,3690,7809,10000,4512,547,364] high=[x for x in price if x>5000] print("原价格:",price) print("高于5000的价格表:",high)
扩展
字典推导式
快速合并列表为字典或提取字典中目标数据。
实例
1.创建一个字典:字典key是1-5数字,value是这个数字的平方
dict1={i:i**2 for i in range(1,5)} print(dict1)#{1: 1, 2: 4, 3: 9, 4: 16}
2.将2个列表合并成一个字典
list1=['name','age','gender'] list2=['tom',20,'man'] ral = {list1[i]:list2[i] for i in range(len(list1))} print(ral)#{'name': 'tom', 'age': 20, 'gender': 'man'}
如果2个列表数据个数相同,len统计任何一个列表长度都可以
如果2个列表数据个数不同,len统计数据多的列表数据个数会报错,len统计数据少的列表数据个数不会报错
集合推导式
主要用来去重
list1=[1,1,2] set1 = {i**2 for i in list1} print(set1)#{1, 4}