列表推导式
语法解析:
[ 程序执行完赋值给(变量x) for 变量 in range() 条件语句(if 或者 for) 变量 in range() ] #从左到右依次执行
下面我们来看一下常规的循环或者判断语句写法和列表生成式写法的几种对比
1 # 常规写法 2 list1=[] 3 for x in range(1,10): 4 list1.append(x) 5 print(list1) #输出为 [1, 2, 3, 4, 5, 6, 7, 8, 9] 6 7 # 列表生成式写法 8 list1=[ x for x in range(1,10) ] 9 print(list1) #输出为 [1, 2, 3, 4, 5, 6, 7, 8, 9]
1 # 常规写法 2 list1=[] 3 for x in range(1,10): 4 list1.append(x*x) 5 print(list1) #输出为 [1, 4, 9, 16, 25, 36, 49, 64, 81] 6 7 #列表生成式写法 8 list1=[x*x for x in range(1,10)] 9 print(list1) #输出为 [1, 4, 9, 16, 25, 36, 49, 64, 81]
# 常规写法 list1=[] list=[[1,2,3],[4,5,6],[7,8,9]] for x in list: for y in x: if y%2==0: list1.append(y) print(list1) #输出为 [2, 4, 6, 8] # 列表生成式写法 list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] list1 = [x for y in list for x in y if x % 2 == 0] print(list1) #输出为 [2, 4, 6, 8]
#增加if else 的列表生成式 list = [x if x % 2 == 0 else -x for x in range(1, 10)] print(list) #输出为 [-1, 2, -3, 4, -5, 6, -7, 8, -9]