2014-11-02 1 views
0

Я начинающий Python застрял в простой проблеме. Возможно, я не смогу четко описать свою проблему, но поиск вокруг не принесет больших результатов.В списке Python - Как получить переменную, хранящуюся в известной позиции? Python 2.7

У меня есть два вложенных списков в Python:

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

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

Я написал функцию, которая печатает любой другой элемент в списке, то есть, только удобочитаемое значение в этих конкретных списках.

Когда я вызвать функцию так:

print_stations(dc) 

... это работает нормально:

1 . Miami 
2 . Chicago 
3 . New York 

Но когда я называю это так:

print_stations(ny[2]) 

.. Я ничего не получаю.

Почему не ny[2] == dc? Я уверен, что мне не хватает чего-то очень простого, но мои навыки Google, похоже, подвели меня.

+0

Что такое ваш постоянный ток, босс и т.д. – Hackaholic

+0

похоже, что упорядоченный словарь может быть лучше, чем помнить индексы и смещения для конкретных элементов данных. –

ответ

2

Вы не сохранили название dc в списке ny. Вы сохранили ссылку на тот же объект списка.

Вы тогда отскока имя dc, чтобы указать на нового списка. Остальная ссылка в списке не изменилась с этим.

Вместо того, чтобы создавать новый список для dc, измените его на месте. Добавление новых записей в существующий список:

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

или заменить все элементы в списке (который может быть 0) с новым содержанием:

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

Большое спасибо - это имеет смысл! – jamesfacts

1

У вас есть это:

dc = [] 

И затем это:

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

Итак, вы поместили пустой список (dc) в ваш список ny. После этого вы переназначаете dc на что-то еще, но список на ny[2] по-прежнему остается пустым списком, который вы изначально выложили.

Try назначая dc, прежде чем положить его в ny или попробовать модификацииdc вместо переназначить его.

+0

Это абсолютно моя проблема. Большое спасибо за ответ! – jamesfacts

0

Ошибка здесь в том, что вы назначаете «dc» значение после определения «ny».

вы получите пустой список, когда вы будете пытаться print_station (Нью-Йорк [2]) `

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

, но если вы пишете код, как это:

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) 

вы получите следующее выход:

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


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

Большое спасибо - я ценю ответ! – jamesfacts

 Смежные вопросы

  • Нет связанных вопросов^_^