Использовать формат для печати списка, который может содержать неизвестное количество переменных во время выполнения? - PullRequest
0 голосов
/ 24 августа 2018

Следующее работает, когда я знаю, что sample_list будет содержать ровно 4 элемента.

sample_list = ['cat', 'dog', 'bunny', 'pig']
print("Your list of animals are: {}, {}, {} and {}".format(*sample_list))

Как я могу отформатировать строку, если я не знаю, сколько элементов будет содержать sample_list ввремя выполнения?Это будет означать, что я не могу ввести соответствующее количество скобок во время разработки.

Ответы [ 4 ]

0 голосов
/ 24 августа 2018

Если вы используете Python 3.5+, вы можете использовать f-строки, например:

sample_list = ['cat', 'dog', 'bunny', 'pig']
print(f"Your list of animals are: {', '.join([item for item in sample_list[:-1]])} and {sample_list[-1]}")

f-строки безопаснее, чем использование % при вводе данных, и более гибкие, чем .format, дляэтот пример не имеет большого значения, по моему скромному мнению, нужно привыкнуть использовать их, поскольку они превосходны:)

0 голосов
/ 24 августа 2018

Я бы просто использовал join

sample_list = ['cat', 'dog', 'bunny', 'pig']
printstr = '%s, and %s' % (', '.join(sample_list[:-1]), str(sample_list[-1]))
print("Your list of animals are: %s" % printstr)
0 голосов
/ 24 августа 2018

Вы можете создать строку, которую используете format.

sample_list = ['cat', 'dog', 'bunny', 'pig']
test='Your list of animals are: '+'{}, '*(len(sample_list)-1)+'and {}'
print(test) # Your list of animals are: {}, {}, {}, and {}
print(test.format(*sample_list)) # Your list of animals are: cat, dog, bunny, and pig
0 голосов
/ 24 августа 2018

Это может помочь.

sample_list = ['cat', 'dog', 'bunny', 'pig']
str_val = ""
l = len(sample_list) -1

for i, v in enumerate(sample_list):
    if i == l:
        str_val += " and {}".format(v)
    else:
        str_val += " {},".format(v)    

print("Your list of animals are: {}".format(str_val))

Или однострочный

str_val = "".join(" and {}".format(v) if i == l else " {},".format(v) for i, v in enumerate(sample_list))
print("Your list of animals are: {}".format(str_val))

Выход:

Your list of animals are:  cat, dog, bunny, and pig
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...