запись объектов unicode из цикла в список в Python

#python #list #unicode #append

#python #Список #юникод #добавить

Вопрос:

У меня есть цикл, который возвращает мне объекты Unicode:

 for i in X:
print i

Output:  

  A
  B
  C
  ...
  Z
  

Как я могу составить список этих объектов, чтобы получить следующее?

 ['A', 'B', ..., 'Z']
  

Если бы они были числами, я бы сделал

 for i in X:
y=[]
i.append(y)
  

но здесь я получаю сообщение об ошибке

 AttributeError: 'unicode' object has no attribute 'append'
  

Ответ №1:

Если вы перебираете переменную, вы уже знаете, что это итеративный объект, такой как генератор или список. Во-первых, вам нужно указать нам тип x переменной в вашем заявлении.

Если ожидаемый результат представляет собой список, а x не один, просто вызовите list функцию:

 new_list = list(x)
  

Если по какой-либо причине вам необходимо создать список в цикле, вы должны вызвать append функцию для ранее созданного списка, а не элемента, как вы делаете в своем примере:

 new_list = []
for i in x:
    new_list.append(i)
print (new_list)
  

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

1. но это то, что я делаю, прежде чем получить ошибку: (

2. @Polly Нет, это не так. Вы делаете i.append(new_list) вместо new_list.append(i)

3. Нет, это не так: во-первых, ваш код не имеет индексов, а во-вторых, вы объявляете (неиспользуемую) y переменную внутри цикла, а затем добавляете к элементу i , а не к списку. Обратите внимание, что я написал new_list.append , а не i.append

Ответ №2:

попробуйте это:

output_list = [y for y in x]

в вашем цикле:

 for i in X:
    i.append(X)
  

он принимает каждый элемент X , который является символом unicode, и пытается добавить к нему весь X объект.

Я думаю, что вы хотите сделать вот так:

 l = []
for i in X:
    l.append(i)
print l
  

но это может быть достигнуто с помощью простого понимания списка, показанного выше.

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

1. Это долго для output_list = list(x)