在Python列表中 - 如何检索存储在已知位置的变量? Python 2.7

时间:2014-11-02 22:23:37

标签: python python-2.7 nested-lists

我是一个Python初学者,陷入了一个简单的问题。我可能无法清楚地描述我的问题,但搜索并没有结果。

我在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?我确定我错过了一些非常简单的事情,但我的谷歌技能似乎让我失望了。

4 个答案:

答案 0 :(得分:2)

您未将名称dc存储在ny列表中。您存储了对同一列表对象的引用

然后反弹名称dc以指向列表。列表中的另一个参考文献没有随之改变。

而不是为dc创建新列表,而是将其更改为就地。将新条目添加到现有列表中:

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

或用新内容替换列表中的所有元素(可能为0):

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

答案 1 :(得分:1)

你有这个:

dc = []

然后这个:

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

因此,您已将空列表(dc)放入ny列表中。之后,您将dc重新分配给其他内容,但ny[2]上的列表仍然是您最初放入其中的空列表。

在将dc放入ny之前尝试分配dc,或尝试修改 {{1}}而不是重新分配它。

答案 2 :(得分:0)

这里的错误是你在定义“ny”后给“dc”赋值。

当您尝试print_station(ny [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']

答案 3 :(得分:0)

您知道位置了吗,调用列表并将[Number here]放在方括号内。 list = ['Yellow', 'Red', 'blue']

如果您想在列表中获得第二名,则该列表中的数字为1,因为python从0开始计数。

print(list[1])

结果:

>>'Red'