2016-01-06 4 views
0

У меня есть следующий кортеж под названием dataПолучение «TypeError:„datetime.date“объект не итерация» в то время как итерация кортежа (преобразование кортежа в список)

data = (
    datetime.date(2015, 9, 11), 
    datetime.datetime(2015, 9, 11, 12, 55, 24), 
    'BB', 
    'ABC', 
    ) 

Он состоит из date, datetime , и два элемента str.

При преобразовании этого tuple в list, я пытаюсь перебирать его следующим образом:

ls = [] 
for i in data: 
    ls.append(list(i)) 

я получил следующее сообщение об ошибке TypeError: 'datetime.date' object is not iterable.

Почему?

+0

почему 'список (я)' ... Вы хотите, чтобы составить список списков или что? –

+1

У вас нет кортежа, который вы вызываете в datetime.date, вы уверены, что не хотите 'ls = list (data)' или 'ls.append ([i])'? –

+0

'ls = list (data)' –

ответ

1

Вы перебор кортежа штрафа, но проблема с list(i) каким самого пытается перебирать элемент i, преобразование элементов в список. Чего вы хотите:

ls = [] 
for i in data: 
    ls.append(i) 

Или, если по какой-то причине вы хотите, чтобы каждый элемент в своем собственном списке:

ls = [] 
for i in data: 
    ls.append([i]) 
2

При использовании for цикла в Python, каждый элемент вещи вы Перебор привязывается к имени, которое вы используете в операторе for. Так что в вашем случае:

for i in data: 
  • i сначала обязан datetime.date(2015, 9, 11)
  • i затем связывается со вторым элементом datetime.datetime(2015, 9, 11, 55, 24)
  • i затем привязанного к третьему элементу 'BB'
  • i затем связанный с четвертым элементом 'ABC'

Так внутри for цикла, когда вы говорите:

ls.append(list(i)) 

вы пытаетесь создать список из каждого элемента - и вы не можете сделать список из date ни datetime.

Самый простой способ преобразовать тип вашей последовательности от tuple к list является:

data = list(data) 
Смежные вопросы