#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)