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

2024-03-29 11:53:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个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不是?我肯定我错过了一些非常简单的东西,但我的谷歌技能似乎让我失望了。你知道吗


Tags: 列表newdcbostonprintyorkstations初学者
3条回答

您没有将名称dc存储在ny列表中。您存储了对同一列表对象的引用。你知道吗

然后将名称dc指向一个新的列表。列表中的另一个参考并没有因此而改变。你知道吗

与其为dc创建一个新的列表,不如就地修改它。向现有列表添加新条目:

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

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

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

你有这个:

dc = []

然后这个:

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

所以您将一个空列表(dc)放入了ny列表中。之后,您将dc重新分配给其他对象,但是ny[2]处的列表仍然是您最初放在那里的空列表。你知道吗

在将dc放入ny之前尝试分配它,或者尝试修改^{dc而不是重新分配它。你知道吗

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

当您尝试打印站点(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']

相关问题 更多 >