繁体   English   中英

如何使用列表推导在两个不同的列表中添加If和Else的值?

[英]How can I add the values of If and Else in two different lists, using list comprehension?

even = []
odd = []
lst = []

for i in range(1, 21):
    lst.append(i)

查找偶数或奇数

for i in lst:
    if i % 2 == 0:
        even.append(i)
    else:
        odd.append(i)

print(even, odd)

是否有任何使用列表理解的Python方法,其中“ if and else”条件的输出值必须保存在两个不同的列表中。

对于一个简单的解决方案,您可以执行以下操作:

odds = [i for i in range(1,21) if i % 2 == 0]
even = [i for i in range(1,21) if i % 2 != 0]

其他人提供了一些不错的衬垫。

odd=[]
even=[]
[even.append(i) if i%2==0 else odd.append(i) for i in xrange(1,21)]

您可以使用if else来做到这一点。

认为这就是@fourtheye在他的评论中提到的内容。

>>> el,ol = filter(lambda x: x % 2 == 0, range(1, 21)),filter(lambda x: x % 2 != 0, range(1, 21))
>>> el
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
>>> ol
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

这是一个简单的解决方案。

>>> lst = range(1,21)
>>> odd = range(1,21,2)
>>> even = range(2,21,2)
>>> odd
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
>>> even
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
>>> lst
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

范围(开始,停止[,步骤])

这是创建包含算术级数的列表的通用功能。 它最常用于for循环

几乎没有pythonic且速度慢,但是在包含几个列表理解和zip的单个表达式中仍然可以实现。 就像是:

odds, evens = [[y for y in x if y is not None] for x in zip(*[(x, None) if x % 2 else (None, x) for x in range(1, 21)])]

分解...我们构造了一个元组列表,其中第一项是奇数,否则为None; 第二项是数字(如果是偶数),否则为None(无)。

[(x, None) if x % 2 else (None, x) for x in range(1, 21)]

我们将其解压缩为两个赔率清单...不幸的是,它也包含所有的Nones

zip(*[(x, None) if x % 2 else (None, x) for x in range(1, 21)])

因此我们用[y for y in x if y is not None]过滤掉[y for y in x if y is not None]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM