【问题标题】:Segregating odd and even numbers into separate lists - a more concise approach?将奇数和偶数分隔到单独的列表中 - 一种更简洁的方法?
【发布时间】: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


    【解决方案1】:

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

    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)),这样更容易阅读。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      相关资源
      最近更新 更多