2011-09-20 4 views
0

저는 파이썬 2.5.1을 사용하고 있습니다. 나는 122 개의 값을 가진 목록 ('coll')을 가지고있다. 첫 번째 목록에서 처음 9 개의 값 (coll [0-8])을 얻고 'coll_1'이라고하는 두 번째 목록을 'coll_2'라고하며 9 개의 값을 갖는 15 개의 목록으로 나누고 싶습니다. 17 등등 ...Python - 목록을 숫자 이름이있는 알려진 목록으로 분할합니다.

어떻게해야합니까?

EDIT : 목록의 값은 숫자가 아닌 문자열입니다.

+1

무엇을 시도 했습니까? BTW 게시하기 전에 그래서 몇 가지 검색을 수행, 질문은 번 응답되었습니다. 가장 좋은 해결책은 아마도 이것 일 것입니다. http://stackoverflow.com/questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks-in-python/312464#312464 –

+0

BTW, didn ' 위의 의견에 대한 의도는 너무 가혹한 것으로 들리며, 미안하다. –

+0

여기에는 두 가지 측면이 있습니다. 즉, 목록을 분할하여 (전달한 질문에 좋은 해결책이 있음), 현재 범위에 이름을 주입합니다. 질문의 일부가 아니었다). –

답변

0

locals을 사용하여 현재 범위의 로컬 변수 사전을 가져와 조작 할 수 있습니다.

coll = range(100,222) 
for i in range(15): 
    locals()['coll_' + str(i+1)] = coll[9*i:(9*i)+8] 

계산이 잘못되었습니다. coll_14 전체 아니고 coll_15

+0

[python 2.5 documentation] (http://docs.python.org/release/2.5/lib/built-in-funcs.html#l2h-47) : "경고 :이 사전의 내용을 수정해서는 안됩니다 변경은 인터프리터가 사용하는 지역 변수 값에 영향을 미치지 않을 수 있습니다. " 그래서,'locals()를 수정하는 것은 좋은 생각이 아닌 것 같습니다 ... –

+0

locals()가하는 일을 완전히 이해하지 못했지만 coll 만 채워집니다. – jonatr

+0

iPython 및 Python (v2. 7.1). –

0
for i in range(len(coll)/9): 
    exec 'coll_'+str(i+1)+'='+str(coll[i*9:(i+1)*9]) 

비어 있지만 coll의 내용이 사용자의 입력에서 오는 경우 exec를 사용하는 것은 큰 보안 위험을 초래할 수 있습니다.

3

이것은 단지 문제를 묻는 것입니다. 왜 그 목록의 목록을 작성하지 않습니까?

colls = [coll[9*i:9*(i+1)] for i in range(15)] 

이렇게하면 동적 실행, 로컬 변수 검사 또는 이와 유사한 작업을 수행하지 않고 각각에 액세스 할 수 있습니다.

관련 문제