Заменить цикл с пониманием списка - PullRequest
1 голос
/ 23 января 2012
string = ""
for e in list:
    string += e

Как бы этот цикл for был выражен как понимание списка, чтобы он выводил строку?

Ответы [ 3 ]

13 голосов
/ 23 января 2012

Предпочтительная идиома для того, что вы хотите:

string = ''.join(l)

Объяснено: join() - это строковый метод, который получает повторяемый и возвращает строку со всеми элементами в повторяемом разделенный строкой, он вызывается. Так, например, ', '.join(['a', 'b']) просто вернет строку 'a, b'. Поскольку списки являются итеративными, мы можем передать их в join с разделителем '' (пустая строка), чтобы объединить все элементы в списке.

Примечание: поскольку list - это имя встроенного типа для списков в Python, желательно не маскировать его, называя переменную list. Поэтому я назвал список в примере l.

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

Списочные выражения возвращают списки, а не строки. Используйте join ()

string = "".join(lst)

Чтобы лучше понять метод объединения, см .: http://docs.python.org/library/stdtypes.html#str.join

Кроме того, остерегайтесь именования переменной как list, поскольку она является распознанным типом и вызовет проблемы в дальнейшем.

1 голос
/ 17 августа 2014

не понимание списка, но все еще коротко, надежда работает.

string = ''
list = ['a',' f' , 'f' ,'daf','fd']

x =reduce(lambda x,y: x + y, list, string)
print x
...