如何优化以下代码。谁能帮我::
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, ...)
会将其添加到开头(在正确的位置)。此外,与reverse-delete idiom一样,您可以反向遍历b
。您将像以前一样以
b
和c
结尾。但是,复杂度仍然是相同的。如果顺序不重要,请将
odd.insert(0, even.pop(i))
更改为odd.append(even.pop(i))
,这样更易于阅读。关于python - 将奇数和偶数分离到单独的列表中-更简洁的方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53578125/