Печать списка Python (форматирование)
Имея список:
x=['s',2,'3',4,5,6]
Я могу напечатать это так:
for i in x:
print i
Однако, как я выяснил, немного быстрее использовать только один оператор print, например так (ниже показано, как я дошел до этого момента):
print "\n".join( i.__class__==string and i or str(i) for i in x )
Учитывая, что я хочу использовать второй вариант и что я хотел бы, чтобы выходные данные были примерно такими (я также хотел бы включить счетчик):v1: s v2: 2 v3: 3 etc
Вот что я попробовал:
1)
count=0
print (("v"+str(++count)).join(":%s "% i for i in x ) )
результат::s, v0:2, v0:3, v0:4, v0:5, v0:6,
На самом деле не то, к чему я стремлюсь.
а) str(++count) ничего не печатает, count++ выдает ошибку синтаксиса
б) первый v
нигде не найти, так как join
в этом случае добавляются разделители и нет необходимости в первом элементе
2)
print ( ["v"+str(++count)+ ":%s, "% i for i in x ] )
дает ['v0:s, ', 'v0:2, ', 'v0:3, ', 'v0:4, ', 'v0:5, ', 'v0:6, ']
Лучше, но все же нет counter
и я не хочу []
показывается
3) Очистите все и перезапустите:
print ",".join(i for i in x )
не может соединить string
а также int
так становится:
print ",".join(i.__class__==string and i or str(i) for i in x )
который дает:
s,2,3,4,5,6
И вот где я застрял.
2 ответа
Я бы предложил использовать enumerate
:
x = ['s',2,'3',4,5,6]
print ', '.join('v{}: {}'.format(v, i) for v, i in enumerate(x))
# v0: s, v1: 2, v2: 3, v3: 4, v4: 5, v5: 6
Хотя я согласен с ответом @ARodas, я хотел бы также отметить, что:
Вы должны убедиться, что печать действительно является узким местом в вашей программе, прежде чем начинать ее оптимизацию (это очень редко происходит).
expr1 and expr2 or expr3
использовался до Python 2.5, когдаexpr2 if expr1 else expr3
троичный оператор был введен. Если вы не нацелены на Py <= 2,4,if else
предпочтительнееВместо
i.__class__==string
лучше написатьisinstance(i, string)
(что такоеstring
, тем не мение? Ты имел ввидуstr
?).Более того, вам не нужно проверять, что:
str()
строки просто возвращает эту строку.Здесь нет
++
оператор в Python.++count == +(+count) == count
,