форматирование строк со списками не работает в Python - PullRequest
0 голосов
/ 09 июня 2018

Я хотел использовать форматирование строк вместо этого грязного способа

data=(1, 8)
a=((list(range((data[0]), ((data[-1])+1)))))
print (a)

, но когда я пытался использовать форматирование строк, у меня была синтаксическая ошибка

data=(1, 8)
a=((list(range(%f,%f))) % data)
print(a)

Я использовал% s вместо% f

data=(1, 8)
a=((list(range(%s,%s))) % data)
print(a)

Ответы [ 2 ]

0 голосов
/ 09 июня 2018

В этом точном броске вы можете просто позвонить list(data) и получить то, что вы хотите.Кроме того, вы злоупотребляете скобками.Первое утверждение может быть сведено к следующему:

a = list(range(data[0], data[-1]+1)

Или, технически, просто так:

a = list(data)

Теперь, если вы действительно хотите создать диапазон между двумя значениями, хранящимися вКроме того, вы можете использовать

a = range(*data)

Префикс * распаковывает данные в итерируемое.Вы можете хранить аргументы таким образом.Например:

args = (6, 2)
pow(*args)

идентичен

args = (6, 2)
pow(args[0], args[1])

Таким образом, в вашем конкретном случае, a = range(*data) сгенерирует a = range(1, 8).Не то, что именно то, что вы хотели, но может быть полезно.

0 голосов
/ 09 июня 2018

range(data[0], data[-1] + 1) - лучшее, что вы можете получить.Значением этого выражения является диапазон, а не список.Если вы планируете использовать его дальше в цикле, для понимания списка и т. Д., Просто оставьте все как есть.Если вам действительно нужен список (вероятно, нет), преобразуйте диапазон в список: list(range(data[0], data[-1] + 1)).

Другой вариант - list(range(*data)) + [data[-1]], но он выглядит еще хуже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...