Список конкатенатов Python
Я новичок в python, и это просто автоматизировать что-то на моем ПК. Я хочу объединить все элементы в списке. Проблема в том, что
''.join(list)
не будет работать, поскольку это не список строк.
Этот сайт http://www.skymind.com/~ocrow/python_string/ говорит, что самый эффективный способ сделать это -
''.join([`num` for num in xrange(loop_count)])
но это недействительно python...
Может кто-нибудь объяснить правильный синтаксис для включения этого типа цикла в string.join()?
Ответы
Ответ 1
Вам нужно превратить все в список в строки, используя конструктор str()
:
''.join(str(elem) for elem in lst)
Обратите внимание, что обычно не рекомендуется использовать list
для имени переменной, он затеняет встроенный конструктор list
.
Я использовал выражение-генератор для применения конструктора str()
для каждого элемента в списке. Альтернативный метод заключается в использовании функции map()
:
''.join(map(str, lst))
Обратными выражениями в вашем примере являются еще одно написание вызова repr()
значения, которое существенно отличается от str()
; вы, вероятно, хотите последнего. Поскольку он нарушает принцип Python "Должен быть один - и желательно только один - простой способ сделать это" ., синтаксис backticks был удален из Python 3.
Ответ 2
Вот еще один способ (обсуждение Python 2.x):
''.join(map(str, my_list))
Это решение будет иметь самую быструю производительность, и оно выглядит красиво и просто imo. Использование генератора не будет более эффективным. На самом деле это будет более эффективно, так как ''.join
должен выделять точный объем памяти для строки на основе длины элементов, поэтому в любом случае необходимо будет использовать весь генератор перед созданием строки.
Обратите внимание, что ``
был удален в Python 3, и не рекомендуется использовать его больше, более явным, используя str()
, если вам нужно, например. str(num)
.
Ответ 3
просто используйте это, не нужно []
и используйте str(num)
:
''.join(str(num) for num in xrange(loop_count))
для списка просто замените xrange(loop_count)
на имя списка.
Пример:
>>> ''.join(str(num) for num in xrange(10)) #use range() in python 3.x
'0123456789'
Ответ 4
Если ваш Python слишком стар для "понимания списков" (нечетный [x for x in ...]
синтаксис), используйте map()
:
''.join(map(str, list))
Ответ 5
Списки в Python могут быть объединены двумя способами
Использование оператора + Использование extends. Пусть list_a и list_b определены, как показано ниже
list_a = [1, 2, 3, 4]
list_b = [5, 6, 7, 8]
Использование оператора + для объединения двух list_a и list_b
list_c = list_a + lis_b
печать (list_c)
Выход: [1, 2, 3, 4, 5, 6, 7, 8]
Если мы не хотим новый список, т.е. list_c
list_a = list_a + list_b
печать (list_a)
# Вывод: [1, 2, 3, 4, 5, 6, 7, 8]
Используя расширение
Оператор расширения может использоваться для объединения одного списка в другой. Невозможно сохранить значение в третьем списке. Один из существующих списков должен хранить объединенный результат.
list_c = list_a.extend(list_b)
печать (list_c)
Выход: NoneType
печать (list_a)
Выход: [1, 2, 3, 4, 5, 6, 7, 8]
печать (list_b)
Выход: [5, 6, 7, 8]
В приведенном выше примере расширяет объединяет list_b в list_a