Есть ли идиома для join () с головой или хвостом? - PullRequest
4 голосов
/ 27 января 2012

''. Join (список) довольно хорош.Однако я заметил, что мне очень часто приходится добавлять дополнительные символы в начало и конец.Я сделал это несколькими способами, но кажется, что есть более читаемый способ, о котором я не могу думать.

Есть ли элегантный способ справиться с этим?Я просто слишком обдумывал это?

Например:

["column1", "column2", "column3"]

Желаемый результат:

 | column1 | column2 | column3 | 

Код без начала и конца (кратко!)

print ' | '.join(mylist)

с головой и хвостом:

print ' | ' + ' | '.join(mylist) + ' | '
print ' | ', ' | '.join(mylist), ' | '
print " | {} | ".format(' | '.join(mylist))
print ' | '.join([''] + mylist + ['']) (ugh)

Ответы [ 5 ]

3 голосов
/ 27 января 2012

Я не вижу лучшего пути, чем подходы, которые вы уже нашли.Вот мои предпочтения, исправление ошибки, когда вы вводили дополнительный пробел в начале и конце:

print ' |' + ' | '.join(list) + '| '

Что вас не устраивает из-за этого?Это читабельность?Вам приходится повторяться, когда вы генерируете одну и ту же строку в разных местах?Если это так, ответ на оба вопроса заключается в том, чтобы упаковать эту строку как функцию и заставить вызывающих ее использовать.

3 голосов
/ 27 января 2012

Я думаю, что третий вариант - это шкаф, который вы можете получить:

print " | {} | ".format(' | '.join(list))
0 голосов
/ 27 января 2012

Добавление лишних пустых строк в начале и конце списка может позволить вам присоединиться без «повторения» - вы все равно можете изменить разделитель, изменив один символ.избегайте создания временного списка, если lst велико:

from itertools import chain
" | ".join(chain([""], lst, [""])
0 голосов
/ 27 января 2012

Если вам нужна одна строка:

print "| %s |" % (' | '.join(list)) 

Но, возможно, вы ее недооценили.

0 голосов
/ 27 января 2012

Другой вариант:

" | " + "".join(x + " | " for x in lst)

Я не думаю, что есть один "хороший" способ сделать это. Если вам это очень нужно, напишите функцию, которая сделает то, что вам нужно.

...