Как работает f-строка в этой функции Python? - PullRequest
0 голосов
/ 16 июня 2020

Привет, я нашел функцию ниже на каком-то веб-сайте и у меня есть пара вопросов. Функция возвращает ромб из n строк, состоящих из звездочек.

  1. Это конкатенированное для l oop? Это то, что вы можете сделать?
  2. Что происходит в этой ф-строке? Как работает '':*<{line*2+1}?
def diamond(n):
    result = ""
    for line in list(range(n)) + list(reversed(range(n-1))):
        result += f"{'': <{n - line - 1}} {'':*<{line*2+1}}\n"

    return result

1 Ответ

2 голосов
/ 16 июня 2020

Что касается итерации: да, она повторяет конкатенацию двух диапазонов, но это не самый оптимальный способ сделать это. Использование itertools.chain() выглядит лучшим выбором.

Для части форматирования: f"{'':*<{n}}" буквально означает «заполнить правую строку пустой строкой * до длины n. персонажи". Другими словами, это некий крипти c способ сказать '*' * n.

В целом, все, что идет после :, определяет формат на мини-языке спецификации формата .

В целом, это довольно плохой фрагмент кода, не используйте его в качестве примера.

...