Объединение списков Python — включение разделителя в начале или в конце

#python #python-3.x

#python #python-3.x

Вопрос:

Вывод для ', '.join(['a', 'b', 'c', 'd']) равен:

 a, b, c, d
  

Существует ли стандартный способ в Python для достижения следующих результатов вместо этого?

 # option 1, separator is also at the start
, a, b, c, d

# option 2, separator is also at the end
a, b, c, d, 

# option 3, separator is both at the start and the end
, a, b, c, d, 
  

Комментарии:

1. Добавьте "" элемент в начало или конец вашего списка.

2. Или добавьте разделитель в начало / конец вашего результата. В join для этого нет явной опции.

3. «Существует ли стандартный способ? Нет. Стандарт заключается в том, чтобы не включать начальные или конечные разделители. Однако существует множество способов выполнить это, используя стандартную библиотеку и встроенную функциональность. Просто убедитесь, что все, что вы пишете, читаемо и понятно.

4. Это не вывод по «умолчанию», это выходные данные. То, что вы хотите, больше не является объединением; это нечто большее.

Ответ №1:

Стандартного подхода не существует, но естественным способом является добавление пустых строк в конце или в начале (или в конце и в начале). Используя более современный синтаксис:

 >>> ', '.join(['', *['a', 'b', 'c', 'd']])
', a, b, c, d'
>>> ', '.join([*['a', 'b', 'c', 'd'], ''])
'a, b, c, d, '
>>> ', '.join(['', *['a', 'b', 'c', 'd'], ''])
', a, b, c, d, '
  

Или просто использовать форматирование строки:

 >>> sep = ','
>>> data = ['a', 'b', 'c', 'd']
>>> f"{sep}{sep.join(data)}"
',a,b,c,d'
>>> f"{sep.join(data)}{sep}"
'a,b,c,d,'
>>> f"{sep}{sep.join(data)}{sep}"
',a,b,c,d,'
  

Комментарии:

1. Эй, @juanpa, не могли бы вы объяснить использование звездочки? Кажется, я менее современен, чем это

2. @JuanC это просто распаковка аргументов, но теперь вы также можете сделать это с помощью list / dict / set литералов

3. @JuanC оператор * распаковывает содержимое кортежа / списка

Ответ №2:

Вот способ:

 list1 = ['1','2','3','4']  

s = ","

r = f"{s}{s.join(list1)}"

p = f"{s.join(list1)}{s}"

q = f"{s}{s.join(list1)}{s}"


print(r)
print(p)
print(q)