python - 将奇数和偶数分成单独的列表 - 更简洁的方法?

标签 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)

最佳答案

您正在创建两个列表,那么为什么不从其中一个列表中删除呢?

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 中常见的那样。 .

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

<小时/>

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

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

相关文章:

python - MySQL/MariaDB 在数亿数据后插入缓慢

python - 无法在文本文件中找到字符串

python - 如何修改python复数

python - ModuleNotFoundError : No module named 'tf_slim' despite installing

python - 向嵌套列表的字典中插入一个值

python - 如何将类变量的名称传递给函数?

python-3.x - 无法在 http ://127. 0.0.1:8000/或外部 IP 上连接到我的简单 Http 服务器

python - 单继承简单概念

algorithm - 在线大厅系统 - 游戏列表

PHP,将两个数组组合成一个新数组,使用第一个数组的值作为键