如何优化以下代码。谁能帮帮我::
a=[1,2,3,4]
b=[]
c=[]
for i in a:
if i%2==0:
b.append(i)
else:
c.append(i)
最佳答案
您正在创建两个列表,那么为什么不从其中一个列表中删除呢?
even = [1, 2, 3, 4]
odd = []
for i in reversed(range(len(even))):
if even[i] % 2 != 0:
odd.insert(0, even.pop(i))
pop
从第一个删除,而 insert(0, ...)
会将其添加到开头(在正确的位置)。此外,您还可以反向迭代 b
,就像 reverse-delete idiom 中常见的那样。 .
您将像以前一样得到 b
和 c
。然而,就复杂性而言,它仍然是一样的。
如果顺序不重要,请将 odd.insert(0, Even.pop(i))
更改为 odd.append(even.pop(i))
这更容易阅读。
关于python - 将奇数和偶数分成单独的列表 - 更简洁的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53578125/