Я пытаюсь сэкономить здесь немного памяти - я создаю программу, в которой пользователь может ввести (составленный) список целых чисел, например:
1
2
3
4
5
.
.
.
Приведенный ниже код работает хорошо!
input_list = []
while True:
try:
line = input()
except EOFError:
break
input_list.append(int(line))
print(input_list)
Но Теперь я хотел бы использовать какое-то выражение генератора для оценки списка только тогда, когда мне нужно, и я почти (ах!) Получил там.
Этот код работает:
def prompt_user():
while True:
try:
line = input()
except EOFError:
print(line)
break
yield line
input_list = (int(line) for line in prompt_user())
print(list(input_list))
с одним только шарлатаном: последнее целое число, введенное пользователем, всегда опускается. Так, например (^D
- это я набираю CTRL + D на консоли из отладчика pycharm):
1
2
3
4^D
3 # ==> seems like after the EOF was detected the integer on the same
# line got completely discarded
[1, 2, 3]
Я действительно не знаю, как go дальше.