嗨害嗨!我又来了!今天我们来学列表生成式。
先问你一个问题:你创立一个值为[0, 1, 2, 3, 4]的列表会怎么做(不能直接设立)?
是这样吗?
>>> numbers = []
>>> numbers.append(0)
>>> numbers.append(1)
>>> numbers.append(2)
>>> numbers.append(3)
>>> numbers.append(4)
>>> print(numbers)
[0, 1, 2, 3, 4]
还是这样?
>>> numbers = []
>>> for number in range(5):
numbers.append(number)
>>> print(numbers)
[0, 1, 2, 3, 4]
或者这样?
>>> numbers = list(range(5))
>>> print(numbers)
[0, 1, 2, 3, 4]
当然,上述方法都可以。但是——如果你想装逼脱离小白阶段,那就要试试这个!
金色传说之:列表生成式!!!!!
(使用格式:[执行代码 for 变量名 in 可迭代对象])
那现在,咱用列表生成式来改进上面3个程序。
#Program_116
numbers = [number for number in range(5)] #用列表生成式成立列表numbers
print(numbers) #输出列表numbers
"""
控制台:
[0, 1, 2, 3, 4]
"""
执行代码的number相当于填充进去(不是append)。
哦对了,列表生成式可以拥有多个循环和条件判断式!
(格式:[执行代码 for 变量 in 可迭代对象 for 变量 in 可迭代对象 … if 条件 if 条件 …])
勾股定理听过吧?a² + b² = c²
我们可以通过列表生成式来生成符合勾股定理的三角形(边长在1~100之间)
#Program_117
Pythagorean_triangle = [[a, b, c] for a in range(1, 101) for b in range(1, 101) for c in range(1, 101) if a ** 2 + b ** 2 == c ** 2] #用列表生成式生成边长在1~100之间的毕达哥拉斯三角形
print(Pythagorean_triangle) #输出这个列表
"""
控制台:
[[3, 4, 5], [4, 3, 5], [5, 12, 13], [6, 8, 10], [7, 24, 25], [8, 6, 10], [8, 15, 17], [9, 12, 15], [9, 40, 41], [10, 24, 26], [11, 60, 61], [12, 5, 13], [12, 9, 15], [12, 16, 20], [12, 35, 37], [13, 84, 85], [14, 48, 50], [15, 8, 17], [15, 20, 25], [15, 36, 39], [16, 12, 20], [16, 30, 34], [16, 63, 65], [18, 24, 30], [18, 80, 82], [20, 15, 25], [20, 21, 29], [20, 48, 52], [21, 20, 29], [21, 28, 35], [21, 72, 75], [24, 7, 25], [24, 10, 26], [24, 18, 30], [24, 32, 40], [24, 45, 51], [24, 70, 74], [25, 60, 65], [27, 36, 45], [28, 21, 35], [28, 45, 53], [28, 96, 100], [30, 16, 34], [30, 40, 50], [30, 72, 78], [32, 24, 40], [32, 60, 68], [33, 44, 55], [33, 56, 65], [35, 12, 37], [35, 84, 91], [36, 15, 39], [36, 27, 45], [36, 48, 60], [36, 77, 85], [39, 52, 65], [39, 80, 89], [40, 9, 41], [40, 30, 50], [40, 42, 58], [40, 75, 85], [42, 40, 58], [42, 56, 70], [44, 33, 55], [45, 24, 51], [45, 28, 53], [45, 60, 75], [48, 14, 50], [48, 20, 52], [48, 36, 60], [48, 55, 73], [48, 64, 80], [51, 68, 85], [52, 39, 65], [54, 72, 90], [55, 48, 73], [56, 33, 65], [56, 42, 70], [57, 76, 95], [60, 11, 61], [60, 25, 65], [60, 32, 68], [60, 45, 75], [60, 63, 87], [60, 80, 100], [63, 16, 65], [63, 60, 87], [64, 48, 80], [65, 72, 97], [68, 51, 85], [70, 24, 74], [72, 21, 75], [72, 30, 78], [72, 54, 90], [72, 65, 97], [75, 40, 85], [76, 57, 95], [77, 36, 85], [80, 18, 82], [80, 39, 89], [80, 60, 100], [84, 13, 85], [84, 35, 91], [96, 28, 100]]
"""
或者在原基础上,增加边长是奇数这个条件。
#Program_117_1
Pythagorean_triangle = [[a, b, c] for a in range(1, 101) for b in range(1, 101) for c in range(1, 101) if a ** 2 + b ** 2 == c ** 2 if a % 2 if b % 2 if c % 2] #用列表生成式生成边长在1~100之间,且边长长度为奇数的毕达哥拉斯三角形
print(Pythagorean_triangle) #输出这个列表
"""
控制台:
[]
"""
Surprise!没有。
这些毕达哥拉斯三角形至少有一条边的长度是偶数
那全是偶数总可以吧~~~
#Program_117_2
Pythagorean_triangle = [[a, b, c] for a in range(1, 101) for b in range(1, 101) for c in range(1, 101) if a ** 2 + b ** 2 == c ** 2 if not a % 2 if not b % 2 if not c % 2] #用列表生成式生成边长在1~100之间,且边长长度为偶数的毕达哥拉斯三角形
print(Pythagorean_triangle) #输出这个列表
"""
控制台:
[[6, 8, 10], [8, 6, 10], [10, 24, 26], [12, 16, 20], [14, 48, 50], [16, 12, 20], [16, 30, 34], [18, 24, 30], [18, 80, 82], [20, 48, 52], [24, 10, 26], [24, 18, 30], [24, 32, 40], [24, 70, 74], [28, 96, 100], [30, 16, 34], [30, 40, 50], [30, 72, 78], [32, 24, 40], [32, 60, 68], [36, 48, 60], [40, 30, 50], [40, 42, 58], [42, 40, 58], [42, 56, 70], [48, 14, 50], [48, 20, 52], [48, 36, 60], [48, 64, 80], [54, 72, 90], [56, 42, 70], [60, 32, 68], [60, 80, 100], [64, 48, 80], [70, 24, 74], [72, 30, 78], [72, 54, 90], [80, 18, 82], [80, 60, 100], [96, 28, 100]]
"""
可以了。
好了,我是谢pro,886~