我与你,一同学Python(26)

嗨害嗨!我又来了!今天我们来学列表生成式。

先问你一个问题:你创立一个值为[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~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值