2016-07-22 2 views
0

모든 시간대를 파이썬의 튜플에 추가하려고합니다. 나는이 방법을 수행 한 :모든 시간대를 pytz에서 튜플에 추가하기

ALL_TIMEZONES = (
    for idx, tz in enumerate(pytz.all_timezones): 
     (idx, (tz)), 
) 

하지만 때 for 시작 구문 오류가 발생합니다.

왜 그렇게 할 수 없습니까? 반복해야합니까 튜플을 추가하고 추가할까요?

+0

난 당신이 이쪽을 봐 제안 : http://stackoverflow.com/documentation/python/196/comprehensions –

+0

당신의 본능이 올바른지, 당신은 할 수 없습니다 튜플 안에 for 루프를 넣는다. – wwii

+0

'''왜 그렇게 할 수 없습니까? '''- 언어가 허용하지 않기 때문입니다. – wwii

답변

1

표현식이 값을 생성하지 않기 때문에 그렇게 할 수 없습니다.

당신은 그것을 달성하기 위해 발전기 식을 사용할 수 있습니다

ALL_TIMEZONES = tuple((idx, tz) for idx, tz in enumerate(pytz.all_timezones)) 
+0

목록 작성이 아닌 [생성자 표현식] (https://docs.python.org/3/glossary.html#term-generator-expression)을 작성했다고 생각합니다. – wwii

+0

튜플을 사용하고 있기 때문에 참입니다. 감사. – fips

+0

흠 ,, 이는 [식 발전기]이다 (https://docs.python.org/3/reference/expressions.html#generator-expressions)''' "...이를 대신 호로 때문에 괄호 또는 중괄호. "''' – wwii

1

enumerate 당신이 그것을 반복 할 때 튜플을 생성하는 반복자를 돌려줍니다. tuple()은 반복자를 사용합니다. 그래서 ... 당신의 솔루션을

>>> a = ['a','b','c'] 
>>> tuple(enumerate(a)) 
((0, 'a'), (1, 'b'), (2, 'c')) 
>>> 

:

tuple(enumerate(pytz.all_timezones)) 
관련 문제