Разделение нечетных и четных чисел в отдельные списки - более лаконичный подход? - PullRequest
0 голосов
/ 02 декабря 2018

Как оптимизировать приведенный ниже код.Кто-нибудь может мне помочь ::

a=[1,2,3,4]
b=[]
c=[]
for i in a:
    if i%2==0:
        b.append(i)
    else:
        c.append(i)

1 Ответ

0 голосов
/ 02 декабря 2018

Вы создаете два списка, так почему бы не удалить из одного из них?

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 .

В результате вы получите b и c, как и раньше.Сложность, однако, все та же.


Если порядок не важен, измените odd.insert(0, even.pop(i)) на odd.append(even.pop(i)), что немного легче читать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...