将for循环转换为List

时间:2019-05-22 02:03:23

标签: python list for-loop

我正在研究该程序:

  for n in range (0,31):
      if n%2 is 0:
          if (n%2)is 0 and (n%5)is 0:
              print(n)

我希望输出在列表中是这样的。

[0,10,20,30]

我试图添加list.append,

hehe = []

    for n in range (0,31):
        if n%2 is 0:
            if (n%2)is 0 and (n%5)is 0:
                hehe.append(n)
                print(hehe)

但是结果是这样的。

[0]
[0, 10]
[0, 10, 20]
[0, 10, 20, 30]

我如何仅将其设置为[0,10,20,30]?

谢谢。

4 个答案:

答案 0 :(得分:1)

由于您的print位于循环内,因此每次迭代都将其打印出来。您想将打印语句移到末尾。另外,您的第一个if语句是多余的,因为在第二个语句中再次进行相同的检查,因此可以将其删除:

hehe = []
for n in range(0,31):
    if (n%2)==0 and (n%5)==0:
        hehe.append(n)
print(hehe)

最后,这种循环是list comprehension的理想选择:

hehe = [n for n in range(0, 31) if (n%2)==0 and (n%5)==0]
print(hehe)

还请注意,您应该使用0而不是==来对照is来检查值,因为这是数字比较。

答案 1 :(得分:1)

由于print(hehe)位于for循环内,因此每次调用该循环时都会打印出来。

只需在循环hehe完成后才在循环外部调用它即可。

请注意

[x for x in range(31) if not i % 10]  # anything divisible by 2 and 5 is also divisible by 10

更加干净,并且产生与for循环相同的结果。

答案 2 :(得分:0)

这是格式问题。应该是这样的:

hehe = []

for n in range (0,31):
    if n%2 is 0:
        if (n%2)is 0 and (n%5)is 0:
            hehe.append(n)
print(hehe)

您需要将print语句放置在for循环之外,因此不会在每次向hehe添加数据时都调用它。

答案 3 :(得分:0)

hehe = [i for i in range(31) if i%2 == 0 and i%5 == 0]

hehe = [i for i in range(31) if i % 10 == 0]