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