反转列表理解

Reversing a List Comprehension

对于初学者的问题,我深表歉意,但到目前为止,我已经花了太长时间来解决这个问题,我相信这是一个简单的解决方案。

所以

为了练习,我将这个简单的列表理解改回 for 循环:

numbers = [n for n in range(10)]
listcomp = [n/2 for n in numbers if n%2 == 0]

显然所有这一切都是取数字 0 到 9,将它们除以 2 得到从 0.0 到 4.5 的浮点数,然后从列表中删除除以 2 的余数不等于 0 的条目,只留下从 0.0 到 4.0 的整数。这是我认为可行的方法,目前的问题是 if 语句和第二个追加似乎没有效果,我不确定为什么。如果有人能解释一下,我想了解这个问题。

numbers = []
newlist = []
for num in range(0, 10):
    numbers.append(num/2)
for n in numbers:
    if n%2 == 0:
        newlist.append

对于第一个循环,您将遍历范围并附加该范围内每个数字的值除以二。在第一个列表理解中,您所做的就是创建一个列表,其中包含给定范围内的所有整数。在第二个 for 循环中,您基本上是在检查数字是否为偶数,然后根本不附加数字:newlist.append。在第二个列表理解中,如果数字是偶数,则附加数字除以二。

将循环更改为:

for num in range(0, 10):
    numbers.append(num)
for n in numbers:
    if n%2 == 0:
        newlist.append(n/2)

可能还值得注意的是,您可以将第一个 for 循环替换为:

,而不是遍历一系列数字然后仅附加该数字,从而使您的代码更简洁
mylist = list(range(10))