Подтвердить что ты не робот

Список конкатенатов Python

Я новичок в python, и это просто автоматизировать что-то на моем ПК. Я хочу объединить все элементы в списке. Проблема в том, что

''.join(list)

не будет работать, поскольку это не список строк.

Этот сайт http://www.skymind.com/~ocrow/python_string/ говорит, что самый эффективный способ сделать это -

''.join([`num` for num in xrange(loop_count)])

но это недействительно python...

Может кто-нибудь объяснить правильный синтаксис для включения этого типа цикла в string.join()?

4b9b3361

Ответ 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