2012-01-06 3 views
1

여러 빈 목록을 만들 수 있도록 목록의 이름을 증가시키고 싶습니다.파이썬에서 목록의 이름을 늘리는 방법

예를 들어 싶습니다. 내가 함께 일한지

List_1 = [] 
List_2 = [] 
... 
List_x = [] 

:이 작업을 수행하는

for j in range(5):   #set up loop 
    list_ = list_ + str(j)  # increment the string list so it reads list_1, list_2, ect 
    list_ = list()    # here I want to be able to have multiple empty lists with unique names 
    print list_ 

답변

14

올바른 방법은리스트의 목록을하는 것입니다.

list_of_lists = [] 
for j in range(5): 
    list_of_lists.append([]) 
    print list_of_lists[j] 

그런 다음에 액세스 할 수 있습니다 : 당신이 정말 당신은 아마, 당신은 사용할 수 없습니다해야하지만,이 작업을 수행하고자한다면

list_of_lists[2] # third empty list 
list_of_lists[0] # first empty list 

exec :

for j in range(5): 
    list_name = 'list_' + str(j) 
    exec(list_name + ' = []') 
    exec('print ' + list_name) 

문자열 이름을아래에 만듭니다., 그런 다음 exec을 사용하여 해당 동적 조각을 실행합니다.

+0

나는 똑같은 대답하지만, 예를 망쳐, 심하게 : 그래서 당신이 하나를 얻을. – JoeFish

+2

+1하지만 "올바른 방법은 목록의 목록을 만드는 것"에 중점을두고 있으며'exec' /'locals'를 사용하지 않습니다. –

3

은 내가보기 엔 organgeoctopus '대답을 권장하지만, 파이썬에서이 작업을 수행하는 방법을 위해 :

# BAD HACK 
for i in range(5): 
    locals()['list_%d' % i] = [] 
+0

내가 제안한'exec'보다 낫다. 나쁜 연습이지만, 나는 python이 당신이 이런 것들을 할 수 있다고 생각합니다. 그것은 내가 꽤 많은 모퉁이를 줄이게했다! –

+0

지역()은 수정해서는 안됩니다. http://docs.python.org/library/functions.html#locals –

+0

'locals()'를 수정하는 것이 얼마나 위험한 지 알지 못했습니다. 감사합니다. 나는 내 게시물을 편집했지만 _reading_에 매우 유용하기 때문에'locals()'의 사용 가능성을 보여주기 위해 보관할 것입니다. –

관련 문제