Оптимизация кода, генерация списков и словарей

Рейтинг: 0Ответов: 3Опубликовано: 18.02.2023

Вам нужно написать программу, которая принимает на вход 10 чисел и генерирует два списка. Один с четными числами, второй с нечетными.

def generator(*args):
    a = list(args)

    b = [i for i in a if a[i] % 2 == 0 ]
    return b

print(generator(1, 11, 23, 432, 5432, 6543, 213, 1234, 432, 9))

ошибка

Ответы

▲ 1Принят

В данном случае программа не понимает, к какому индексу вы обращаетесь, потому что списка попросту нет.

Проблема решается таким способом:

b = [i for i in a if i % 2 == 0 ]
▲ 2

Можно также использовать filter

def generator(*args):
    return [list(filter(lambda x: x % 2 == i, args)) for i in range(2)]

print(generator(1, 11, 23, 432, 5432, 6543, 213, 1234, 432, 9))
[[432, 5432, 1234, 432], [1, 11, 23, 6543, 213, 9]]
▲ 0

Не понимаю прикола "игры в одной строке".

def generator(list_numbers):
    returned = {'odd':[], 'not-odd':[]}
    for n in range(len(list_numbers)):
        if list_numbers[n] % 2 == 0:
            returned['not-odd'].append(list_numbers[n])
        else:
            returned['odd'].apped(list(numbers[n]))
    return returned