4.6 *列表推导式
列表推导式是一种生成列表的一种语法,下面是一个简单的例子:
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]evens = [x+1 for x in nums ]print(evens)# 输出:[2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
x in nums就是用x去遍历nums,然后每个x都计算x+1,作为生成列表的一项。
开始的x+1表达式中的x就是后面 x in nums的x,如果要改名字,两个x都要改成一致
或者添加条件:
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]evens = [x for x in nums if x % 2 == 0]print(evens)# 输出:[2, 4, 6, 8, 10]
x in nums就是用x去遍历nums,然后判断x是否是偶数,如果是则作为生成列表的一项。
下面的列表项,是一个有两个值的元组,关于元组参考此处
#创建一个包含两个元组的列表,每个元组都包含一个整数和一个整数。t=[(x, y) for x in range(1, 5) for y in range(1, 5)]print(t) #打印 [(1, 1), (1, 2), (1, 3), (1, 4), (2, 1), (2, 2), (2, 3), (2, 4), (3, 1), (3, 2), (3, 3), (3, 4), (4, 1), (4, 2), (4, 3), (4, 4)]
这是一个包含16项的列表,每个列表项的元组都不一样。实际上是集合(1,2,3,4)和自身的笛卡尔积。
#创建一个包含两个元组的列表,每个元组都包含一个整数和一个整数,并且第二个元素是偶数,第三个元素是3的倍数。t=[(x, y) for x in range(1, 10) for y in range(1, 10) if y % 2 == 0 and x % 3 == 0]print(t) #打印[(3, 2), (3, 4), (3, 6), (3, 8), (6, 2), (6, 4), (6, 6), (6, 8), (9, 2), (9, 4), (9, 6), (9, 8)]
元组的两个元素,第一个是3的倍数,第二个是2的倍数