Написать код в одну строку
Как этот код можно написать в одну строчку?
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)
Ответы (3 шт):
Автор решения: wchistow
→ Ссылка
Не совсем в одну строку, но гораздо короче:
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)
Автор решения: Игорь Крещенников
→ Ссылка
Можно в одну :) :
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]
Автор решения: mironovmeow
→ Ссылка
В одну строчку хотите? Будет одна строка. Непонятная, но в одну строку.
Код немного поменял, но алгоритм и суть работы оставил неизменным использовал 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))))))
Выводит два массива, сначала массив чётных, потом массив нечётных.