将奇数和偶数分隔成单独的列表-一种更简洁的方法



如何优化以下代码。有人能帮我吗:

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,这在反向删除习惯用法中很常见。

您将像以前一样使用bc。然而,就复杂性而言,它仍然是一样的。


如果顺序不重要,请将odd.insert(0, even.pop(i))更改为odd.append(even.pop(i)),这样读起来稍微容易一些。

最新更新