如何使用列表理解将 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)
是否有任何使用列表理解的 pythonic 方法,其中 '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]
range(start, stop[, step])
This is a versatile function to create lists containing arithmetic progressions. It is most often used in for loops
几乎没有 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]
过滤掉它们
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)
是否有任何使用列表理解的 pythonic 方法,其中 '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]
range(start, stop[, step])
This is a versatile function to create lists containing arithmetic progressions. It is most often used in for loops
几乎没有 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]