Написать код в одну строку

Рейтинг: -5Ответов: 3Опубликовано: 20.02.2023

Как этот код можно написать в одну строчку?

chet = []
nechet = []

for i in range(10):
    n = int(input('Введите число №' + str(1+i) + ': '))
    if n % 2 == 0:
        chet.append(n)
    else:
        nechet.append(n)
print(chet)
print(nechet)

Ответы

▲ 2

В одну строчку хотите? Будет одна строка. Непонятная, но в одну строку.

Код немного поменял, но алгоритм и суть работы оставил неизменным использовал filter() и lambda выражение:

print(*(lambda s: (list(filter(lambda x: x%2==0, s)), list(filter(lambda x: x%2==1, s))))(list(map(int, (input(f"Введите число №{i+1}: ") for i in range(10))))))

Выводит два массива, сначала массив чётных, потом массив нечётных.

▲ 1

Не совсем в одну строку, но гораздо короче:

chet = []
nechet = []

[chet.append(n) if (n := int(input(f'Введите число №{i + 1}: '))) % 2 == 0 else nechet.append(n) for i in range(10)]

print(chet, nechet)
▲ 0

Можно в одну :) :

chet, nechet = [], []; [chet.append(n) if n % 2 == 0 else nechet.append(n) for i in range(10) if (n:=int(input(f'Введите число №{i+1}: '))) and i < 9]; print(chet); print(nechet)

Вывод:

Введите число №1: >? 1
Введите число №2: >? 2
Введите число №3: >? 3
Введите число №4: >? 4
Введите число №5: >? 5
Введите число №6: >? 6
Введите число №7: >? 7
Введите число №8: >? 8
Введите число №9: >? 9
Введите число №10: >? 10
[2, 4, 6, 8]
[1, 3, 5, 7, 9]