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和else'的输出值条件必须保存在两个不同的列表中。
答案 0 :(得分:2)
对于一个简单的解决方案,你可以这样做:
True
其他人提供了一些不错的衬垫。
答案 1 :(得分:2)
$ sed -n -e '/456/,/ddd/{/ddd/!{s/a/A/g;s/o/Q/g};p}' f2
123-fQQ-456
Abc-xx
fQQ-yy
ddd-ao
您可以使用odd=[]
even=[]
[even.append(i) if i%2==0 else odd.append(i) for i in xrange(1,21)]
。
答案 2 :(得分:1)
认为这是@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]
答案 3 :(得分:1)
这是一个简单的解决方案。
>>> 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循环
答案 4 :(得分:0)
几乎没有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;如果是偶数,则第二项是数字,否则为无。
[(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]