2012-08-24 3 views
-2

최대 6 개까지 입력 할 수있는 목록을 전달 중입니다. 목록보다 짧은 6범위를 벗어나지 않고 모든 list [x]를 순환시키는 가장 효율적인 방법은 무엇입니까?

을 경우 나는 그래서 내가 필요한 범위를 초과하지 않고 다른 VAR에 각 항목을 지정해야합니다

var_1 = list[0] 
var_2 = list[1] 
var_3 = list[2] 
var_4 = list[3] 
var_5 = list[4] 
var_6 = list[5] 

var에의 올 수 있습니다 미리 할당하지 없음 또는 (바람직하게는) 그것은 변수 이름으로 list을 사용하는 나쁜 생각

var 3 = list[2] or None 
+1

왜 당신은 사전을 사용하지 않습니까? –

+1

그리고 'list'와 같은 파이썬 타입으로 변수 이름을 지정하지 마십시오 –

+1

항목의 순서를 보존해야하기 때문에 dict이 없습니다. – chrickso

답변

2

대신에 dict를 사용하십시오.

lst = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k'] 
dct = {'var_%s'%(i+1) : val for i, val in enumerate(lst)} 

dct['var_1'] #accessing fist variable 
>>> 'a' 
dct['var_11'] 
>>> 'k' 
dct['var_12'] 
>>> KeyError: 'var_12' 

참고 : 당신이 정말로, 정말 변수로있는에 주장하는 경우 locals().update(dct)을 할 수 있습니다. 그러나 나는 그것을 추천하지 않는다.

+1

왜 downvote? 이러한 종류의 문제는 일반적으로 dict을 사용하여 해결됩니다. – Lanaru

+0

위대한 작품! muchas gracias – chrickso

+0

localals() ** 수정이 작동하지 않습니다 ** (locals() == globals()와 같은 전역 네임 스페이스에 있지 않은 한) –

0

할, 그래서 나는 lst

var_1, var_2, var_3, var_4, var_5, var_6 = lst + [None] * (len(lst) - 6) 
로 변경