Печать в строковом формате с помощью python3: Как печатать из массива? - PullRequest
0 голосов
/ 11 мая 2019

Python3 имеет супер строковую форматную печать:

'{} {}'.format('one', 'two')

Если мои строки находятся в массиве, можно было бы набрать их:

a = ['one','two']
'{} {}'.format(a[0],a[1])

Но как мне печатать из массива, вместо того, чтобы печатать каждый элемент?

Например, неработающий код:

a = ['one','two']
'{} {}'.format(a)

Дает мне ожидаемую ошибку: IndexError: tuple index out of range

Конечно, игра с ','.join(a) не поможет, потому что она дает одну строку вместо 2.

(или есть способ сделать это лучше с f-строками?)


И для полного раскрытия я использую необработанную строку, потому что она имеет некоторое геометрическое значение, и мой реальный код выглядит так:

hex_string = r'''
            _____
           /     \
          /       \
    ,----(    {}    )----.
   /      \       /      \
  /   {}    \_____/   {}    \
  \        /     \        /
   \      /       \      /
    )----(    {}    )----(
   /      \       /      \
  /        \_____/        \
  \   {}    /     \   {}    /
   \      /       \      /
    `----(    {}    )----'
          \       /
           \_____/
'''

letters = list('1234567')

print(hex_string.format(letters[0], letters[1], letters[2], letters[3], letters[4], letters[5], letters[6]))

Ответы [ 3 ]

5 голосов
/ 11 мая 2019

Используйте для распаковки для расширения массива во время вызова функции.

print(hex_string.format(*letters))

Вывод:

            _____
           /     \
          /       \
    ,----(    1    )----.
   /      \       /      \
  /   2    \_____/   3    \
  \        /     \        /
   \      /       \      /
    )----(    4    )----(
   /      \       /      \
  /        \_____/        \
  \   5    /     \   6    /
   \      /       \      /
    `----(    7    )----'
          \       /
           \_____/

3 голосов
/ 11 мая 2019

Попробуйте распаковать элементы списка, используя *, как показано ниже. Например, печать будет выглядеть как

print ('{} {}'.format(*a))
# one two
1 голос
/ 11 мая 2019

Используйте обозначения * для списков:

print(hex_string.format(*letters))
...