Список \ n с форматом f-String - PullRequest
3 голосов
/ 08 марта 2020

Я знаю, что вы не можете использовать \ n в форматах f строк {}, но я пытаюсь выяснить, как напечатать список, разделенный строкой.

Каждое напечатанное число должно иметь ширина 10

# Output
#         12
#         28
#         45
#         47
#         52
#         71
#         95
#        122
#        164

Мне не разрешено использовать какие-либо внешние модули, такие как itertools или functools, чтобы ответить на этот вопрос.

Я пробовал

num_list = [12, 16, 17, 2, 5, 19, 24, 27, 42]
new_list = num_list.copy()
for n in range(1, len(new_list)):
    new_list[n] += new_list[n-1]

print(f'{*new_list:10f, sep = "\n"}')

Ответы [ 4 ]

2 голосов
/ 08 марта 2020

Спасибо, @chepner !! Это сработало

print('\n'.join([f'{x:10}' for x in new_list]))
2 голосов
/ 08 марта 2020

Попробуйте, это будет печатать строку через каждые l oop и, используя .rjust (), добавить 10 ведущих пробелов.

for n in range(1, len(new_list)):
    new_list[n] += new_list[n-1]

for num in new_list:
    print(f"{num}".rjust(10))
1 голос
/ 08 марта 2020

Если вы хотите придерживаться f-строки, как вы и предполагали, просто напечатайте ее как go вместе с расчетом. Это также позволяет избежать дополнительной итерации по списку.

num_list = [12, 16, 17, 2, 5, 19, 24, 27, 42]
new_list = num_list.copy()

print(f'{new_list[0]:10}') # This gets you the first value

for n in range(1, len(new_list)):
    new_list[n] += new_list[n-1]
    print(f'{new_list[n]:10}') # This prints as you go
0 голосов
/ 08 марта 2020

вы можете использовать str.join:

print('\n'.join(f'{n}'.rjust(10) for n in  new_list))

или использовать встроенную функцию print с неупакованным выражением генератора и разделителем, установленным как \n:

print(*(f'{n}'.rjust(10) for n in  new_list), sep='\n')

вывод:

    12
    28
    45
    47
    52
    71
    95
   122
   164
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...