为什么filtered_lst_2
具有与filtered_lst_1
不同的值,尽管它们具有相同的逻辑?我一定错过了一些明显的东西。谢谢!
lst = [x ** 3 for x in range(1, 11)]
print(lst) # [1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
filtered_lst_1 = []
for x in lst:
if x % 4 == 0:
filtered_lst_1.append(x)
print(filtered_lst_1) # [8, 64, 216, 512, 1000]
filtered_lst_2 = ([x ** 3 for x in range(1, 11) if x % 4 == 0])
print(filtered_lst_2) # [64, 512]
答案 0 :(得分:3)
不同之处在于您正在进行操作的顺序。在第一个中,你首先是立方体,然后是模数。在第二个中,你在>> 之前采用模数。
使第二个输出等于第一个输出:
filtered_lst_2 = ([x ** 3 for x in range(1, 11) if x ** 3 % 4 == 0])
答案 1 :(得分:1)
您可以试试filtered_lst_2 = ([x ** 3 for x in range(1, 11) if (x ** 3) % 4 == 0])
。
答案 2 :(得分:1)
实际上,第一个答案是有道理的。