2010-07-05 3 views
1

for 루프를 풀고 싶은 목록이 있지만 문제가 있습니다.for 루프에서 목록의 목록을 풀 때 문제가 있습니까?

>>> a_list = [(date(2010, 7, 5), ['item 1', 'item 2']), (date(2010, 7, 6), ['item 1'])] 
>>> 
>>> for set in a_list: 
...  a, b = set 
...  print a, b 
... 
2010-07-05 ['item 1', 'item 2'] 
2010-07-06 ['item 1'] 
>>> 
>>> for set in a_list: 
...  for a, b in set: 
...    print a, b 
... 
Traceback (most recent call last): 
    File "<stdin>", line 2, in <module> 
TypeError: 'datetime.date' object is not iterable 

어떻게 처음 작동 하나 두 번째 엔진은 작동하지 않습니까?

답변

1

for a,b in set 그래서 파이썬이 작동하지 않는 튜플 a,bset의 첫 번째 요소의 압축을 풀려고 a,b = set[0] ... loop ... a,b = set[1] ... loop ...

에 해당합니다.

2
가 완전히 다른 대부분 때문에

: 첫 번째 루프에서

, set(date(2010, 7, 5), ['item 1', 'item 2']) 그리고 당신은 그것을 압축을 풉니 다. a,bset의 길이가 같아야합니다. 그리고 첫 번째 요소를 풀고하려고 설정을 통해 2 당신 루프에서

가 (왜 위에 루프 수 2 개 요소 튜플, 그건) : 루프의 첫 번째 반복 date(2010, 7, 5)입니다 tmp = set[0] 않습니다, 당신은 a,b = tmp 시도 지정된 오류 메시지와 함께 실패합니다.

1

난 당신이 뭔가를 찾고 생각 :

>>> for a, b in a_list: 
    print(a, b) 


2010-07-05 ['item 1', 'item 2'] 
2010-07-06 ['item 1'] 

또한, 노트, set가 내장 된 그림자와 같은 변수에 대한 나쁜 이름입니다.

관련 문제