2014-11-02 2 views
0

저는 간단한 문제에 매달린 파이썬 초보자입니다. 내 문제를 명확하게 설명 할 수는 없지만 주위를 둘러 보면서 결실을 맺지 못했습니다.Python 목록에서 - 알려진 위치에 저장된 변수를 검색하는 방법? Python 2.7

파이썬에서 두 개의 중첩 된 목록이 :

ny = [] 
bos = [] 
dc = [] 
mia = [] 
chi = [] 

ny = [bos, 'Boston', dc, 'Washington D.C.', chi, 'Chicago'] 
dc = [mia, 'Miami', chi, 'Chicago', ny, 'New York'] 

내가 목록의 다른 모든 항목을 출력하는 기능, 즉, 이러한 특정 목록에서 바로 사람이 읽을 수있는 값을 썼다.

나는이 같은 함수를 호출

:

1 . Miami 
2 . Chicago 
3 . New York 

을하지만 같이 호출했을 때 :

print_stations(dc) 

은 ... 정상적으로 작동

print_stations(ny[2]) 

.. 아무것도 얻지 못해.

ny[2] == dc이 아닌가요? 나는 아주 간단한 것을 놓치고 있다고 확신하지만 Google 기술은 나를 실패한 것처럼 보입니다.

+0

dc, 보스 등이 무엇입니까 ?? – Hackaholic

+0

주문한 것처럼 보입니다 사전은 특정 데이터 항목에 대한 색인 및 오프셋을 기억하는 것보다 낫습니다 –

답변

2

ny 목록에 dc 이름을 저장하지 않았습니다. 같은 목록 개체에 대한 참조를 저장했습니다.

그런 다음 리바운드 이름 dc새로운 목록을 가리 키도록. 아직 목록에있는 다른 참조 번호는 변경되지 않았습니다.

새 목록을 dc으로 만들지 말고 in-place로 변경하십시오. 새로운 내용으로 목록에있는 모든 요소를 ​​(0이 될 수있는)

dc.extend([mia, 'Miami', chi, 'Chicago', ny, 'New York']) 

또는 교체 : 기존 목록에 새 항목을 추가

dc = [] 

:

dc[:] = [mia, 'Miami', chi, 'Chicago', ny, 'New York'] 
+0

대단히 감사합니다 - 그 말이 완벽합니다! – jamesfacts

1

을이이 그리고 나서 이것 :

ny = [bos, 'Boston', dc, 'Washington D.C.', chi, 'Chicago'] 

ny 목록에 빈 목록 (dc)을 입력하십시오. 그 다음에 dc을 다른 것으로 재 할당하지만 ny[2]의 목록은 여전히 ​​원래 들어 있던 빈 목록입니다. 당신이 ny에 넣어, 또는 그것을 재 할당하는 대신dc을 수정 시도하기 전에 dc을 할당

보십시오.

+0

그건 내 문제 다. 답변 주셔서 대단히 감사합니다! – jamesfacts

0

여기서 오류는 "ny"가 정의 된 후 "dc"값을 지정한다는 것입니다.

ny = [] 
bos = [] 
dc = [] 
mia = [] 
chi = [] 

dc = [mia, 'Miami', chi, 'Chicago', ny, 'New York'] 
ny = [bos, 'Boston', dc, 'Washington D.C.', chi, 'Chicago'] 

print_station(ny[2]) 
print_station() 
print_station() 
print_station(dc) 

당신이 얻을 것이다 다음은 print_station을 시도 할 때

당신은 당신이 이런 식으로 코드를 작성하는 경우 (뉴욕 [2])`하지만

>>>print_station(ny[2]) 
>>>[] 

빈 목록을 얻을 것이다 출력 :

>>>[[], 'Miami', [], 'Chicago', [], 'New York'] 


    [[], 'Miami', [], 'Chicago', [], 'New York'] 
+0

대단히 고마워요. – jamesfacts