дан словарь s = {1: 'Январь', 2: 'Февраль', 3: 'Март', 4: 'Апрель', 5: 'Май', 6: 'Июнь', 7: 'Июль', 8: 'Август', 9: 'Сентябрь', 10: 'Октябрь', 11: 'Ноябрь', 12: 'Декабрь'} нужно вывести ключ_значение в столбик без скобок через двоеточие ключ: значение знаю, что есть вот такой код, назовем его код №1 print('\n'.join(f'{k}: {v}' for k,v in s.items())) и он прекрасно все выводит как надо 1: Январь 2: Февраль 3: Март т.д. а вот этот код под №2 [print(f"{k}: {v}") for k,v in s.items()] тоже делает нужный вывод 1: Январь 2: Февраль 3: Март и т.д. НО, в конце еще печатает и целую строку из 12 none [None, None, None, None, None, None, None, None, None, None, None, None] 2 вопроса 1. откуда берутся эти 12 none да еще в виде списка 2. как поправить код №2 чтобы эти 12 none не выводились
Эти 12 None появляются потому, что в вашем списке создается 12 объектов None в результате выполнения list comprehension. Когда вы используете list comprehension без явного присвоения, то создаются элементы списка, но они не сохраняются или используются далее.
Чтобы избавиться от вывода списка с None, просто уберите вызов list вокруг print:
[print(f"{k}: {v}") for k,v in s.items()]
Этот код будет выводить ключ_значение в столбик без добавления списка с None в конце.
Ваш второй код использует list comprehension для создания списка значений, однако он печатает возвращаемое знание (None) каждый раз, когда вызывается print(). Поэтому после печати ключ_значение вам показывается список из 12 None.
Чтобы избежать вывода списка из 12 None, вы можете использовать цикл for вместо list comprehension, чтобы пройти по элементам словаря и напечатать ключ_значение каждый раз без создания списка. Например:
for k, v in s.items(): print(f"{k}: {v}")
Этот код не будет создавать список значений и выводить только ключ_значение в столбик.
Эти 12 None появляются потому, что в вашем списке создается 12 объектов None в результате выполнения list comprehension. Когда вы используете list comprehension без явного присвоения, то создаются элементы списка, но они не сохраняются или используются далее.
Чтобы избавиться от вывода списка с None, просто уберите вызов list вокруг print:
[print(f"{k}: {v}") for k,v in s.items()]Этот код будет выводить ключ_значение в столбик без добавления списка с None в конце.
Ваш второй код использует list comprehension для создания списка значений, однако он печатает возвращаемое знание (None) каждый раз, когда вызывается print(). Поэтому после печати ключ_значение вам показывается список из 12 None.
Чтобы избежать вывода списка из 12 None, вы можете использовать цикл for вместо list comprehension, чтобы пройти по элементам словаря и напечатать ключ_значение каждый раз без создания списка. Например:
for k, v in s.items():print(f"{k}: {v}")
Этот код не будет создавать список значений и выводить только ключ_значение в столбик.