gpt4 book ai didi

python - 没有素数列表理解

转载 作者:太空狗 更新时间:2023-10-30 02:30:55 25 4
gpt4 key购买 nike

尝试了解列表推导,并在 python 中处理列表中的列表操作。

来自本指南 http://www.secnetix.de/olli/Python/list_comprehensions.hawk我不太明白第一行发生了什么。

>>> noprimes = [j for i in range(2, 8) for j in range(i*2, 50, i)]
>>> primes = [x for x in range(2, 50) if x not in noprimes]
>>> print primes
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]

所以我将这条线放入 pythontutor 中以将其可视化。所以我可以看到对于 i , j 的每个值,它都是 (2,4) (2,6) (2, 8) 然后 (3,6) (3, 9) (3, 12) 等等 但我无法理解在一个句子中到底发生了什么。

让列表为我工作是我变得非常有用的一大绊脚石,我就是无法让它凝固,它对我来说不是“阅读”清楚。

最佳答案

线

noprimes = [j for i in range(2, 8) for j in range(i*2, 50, i)]

相当于:

noprimes = []
for i in range(2,8):
for j in range(i*2, 50, i):
noprimes.append(j)

和线

primes = [x for x in range(2, 50) if x not in noprimes]

相当于:

primes=[]
for x in range(2,50):
if x not in noprimes:
primes.append(x)

更新,回应评论

线条

   for j in range(i*2, 50, i):
noprimes.append(j)

生成一个数字序列。起始数为2*i,增量为i,序列在达到或超过50前停止。

i = 2 时,它生成数字序列 4 6 8 ... 48

i = 3 时,它生成数字序列 6 9 12 ... 48

等等

整个循环生成如下数字

4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48,6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48,8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48,10, 15, 20, 25, 30, 35, 40, 45,12, 18, 24, 30, 36, 42, 48,14, 21, 28, 35, 42, 49

关于python - 没有素数列表理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24336552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com