2013-09-11 1 views
1

두 목록의 크기를 기반으로 개체를 만드는 방법을 찾으려고합니다. 두 목록의 각 색인 조합에 대해 개체를 만들어야합니다. 즉 두 목록의 길이가 3 인 경우 9 개의 새 개체를 만들고 정의해야합니다.두 목록 (파이썬)의 크기에 따라 여러 개체 정의

목록이 길어질 수 있으며 가능한 모든 조합을 수행하기 위해 if 루프를 사용할 필요가 없다면 스크립트를 훨씬 더 멋지게 만들 수 있습니다.

A는 처음 내가 다음 할 수있는 생각 :

for i in range(len(list1)): 
    for j in range(len(list2): 
     Name_of_Object+[i]+[j] = (object definition) 

를하지만이 가능하지 않다 나는 다음과 같은 오류 얻을 :

SyntaxError: can't assign to operator 

을하지만 거기에 기반하여 객체를 생성하는 방법입니다 목록의 색인?

최저

, 마틴

(내 파이썬 프로그래밍을 수행 할 캐노피 환경을 사용하고 있습니다.)

+0

네임 스페이스'Name_of_Object00','Name_of_Object01','Name_of_Object02','Name_of_Object10' 등에서 변수를 만들겠습니까? 그렇지 않으면, 나는 당신이 원하는 것에 대해 명확하지 않습니다. – SethMMorton

+0

@SethMMorton 그건 내가 원하는거야. –

답변

1

왜 목록에서 이러한 개체를 정의하지 다음은 리 개별 변수에 액세스 할 수 있습니다 [이 전] [J]

li = [] 
for i in range(len(list1)): 
    tempLi = [] 
    for j in range(len(list2)): 
     tempLi.append((object definition)) 
    li.append(tempLi) 
+0

문제는 액세스하지 않지만 각 조합에 대해 개체를 정의해야합니다. 이것은 할 수 없습니다. 오브젝트의 정의에는 인덱스를 사용할 수 있지만 이름을 정의하는 데는 사용할 수 없습니다. –

+0

"Name_of_Object + [i] + [j] = (객체 정의)"에서 오류가 발생하는 이유는 "객체 정의"값을 Python 컨테이너가 아닌 왼쪽에 할당 할 수 없기 때문입니다. 위의 방법에서는 각 (i, j)에 대해 하나의 객체를 만드는 것이고, 하나의 객체 대신 목록 객체의 요소로 액세스한다는 것입니다. –

+0

지금 받으십시오. 그것은 작동합니다. –

0

우리는 운영자에게 연결할 수 없지만 우리가 배열을 사용할 수 있습니다. 그

Name_of_Object[i][j] = (object definition) 
0

어쩌면 당신이 exec

으로 할당 할 수
exec("Name_of_Object{0}{1} = object declaration".format(i,j)) 

하지만 난 당신이 specificaly Name_of을 원하지 않는 프로그램에 추가로 간부 인 문없이 객체를 호출 할 수 없기 때문에 이것은 좋은 아이디어라고 생각하지 않습니다 _Object01 또는 Name_of_Object02, ...

예를 들어

당신은 당신이 그것으로 뭔가를 할 때마다 당신이 작성해야합니다 인스턴스를 반복 할 필요가있는 경우 :

exec("Name_of_Object{0}{1}.method(...)".format(i,j)) 

그래서 난 당신이 사용한다고 생각합니다 다차원 배열

관련 문제