【发布时间】:2018-12-02 07:00:23
【问题描述】:
如何优化以下代码。谁能帮帮我::
a=[1,2,3,4]
b=[]
c=[]
for i in a:
if i%2==0:
b.append(i)
else:
c.append(i)
【问题讨论】:
标签: python python-3.x list
如何优化以下代码。谁能帮帮我::
a=[1,2,3,4]
b=[]
c=[]
for i in a:
if i%2==0:
b.append(i)
else:
c.append(i)
【问题讨论】:
标签: python python-3.x list
您正在创建两个列表,那么为什么不从其中一个中删除呢?
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, ...) 将其添加到开头(在其正确位置)。此外,您可以像 reverse-delete idiom 一样反向迭代 b。
你会像以前一样得到b 和c。然而,就复杂性而言,它仍然是一样的。
如果顺序不重要,请将odd.insert(0, even.pop(i)) 更改为odd.append(even.pop(i)),这样更容易阅读。
【讨论】: