如何优化以下代码。谁能帮我::

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

您将像以前一样以bc结尾。但是,复杂度仍然是相同的。



如果顺序不重要,请将odd.insert(0, even.pop(i))更改为odd.append(even.pop(i)),这样更易​​于阅读。

关于python - 将奇数和偶数分离到单独的列表中-更简洁的方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53578125/

10-16 13:04