反转列表理解

问题描述 投票:0回答:2

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

所以

对于练习,我将这个简单的列表理解更改回 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
python list for-loop list-comprehension thonny
2个回答
1
投票

对于第一个循环,您将迭代范围并附加该范围中每个数字除以二的值。在第一个列表理解中,您所做的就是创建一个包含给定范围内的所有整数的列表。在第二个 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))

0
投票

在一行中使用列表理解反转列表项:

l = ['abc','tuv','xyz']
print([i[::-1] for i in l])

© www.soinside.com 2019 - 2024. All rights reserved.