首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >值已找到,但另一个未分配(列表)

值已找到,但另一个未分配(列表)
EN

Stack Overflow用户
提问于 2022-06-13 21:35:43
回答 2查看 39关注 0票数 0

我根本找不出为什么它是这样工作的:

代码语言:javascript
复制
cities = ['Madrid', 'Barcelona', 'Valencia', 'Murcia']

for city in range(len(cities)):
    if cities[city] == 'Madrid':
        cities[city] = 1

    elif cities[city] == 'Barcelona':
        cities[city] = 2

    elif cities[city] == 'Valencia':
        cities[city] = 3

    else:
        cities[city] = 4

print(cities)

这张照片给了[1, 2, 3, 4]它应该有的东西。

但如果我这么做

代码语言:javascript
复制
cities = ['Madrid', 'Barcelona', 'Valencia', 'Murcia']
for city in cities:
    if city == 'Madrid':
        print('hey')
        city = 'Kiev'
print(cities)

结果如下:

代码语言:javascript
复制
hey
['Madrid', 'Barcelona', 'Valencia', 'Murcia']

因此,它识别'Madrid',因此打印hey,但不将'Kiev'分配给它。然而,在第一个例子中,使用索引范围,重新分配是完美的。

EN

回答 2

Stack Overflow用户

发布于 2022-06-13 22:01:40

让我们看一段类似的代码:

代码语言:javascript
复制
cities = ['Madrid', 'Barcelona', 'Valencia', 'Murcia']
city = cities[0]
city = 'Kiev'
print(cities)

输出:

代码语言:javascript
复制
['Madrid', 'Barcelona', 'Valencia', 'Murcia']

在这里,最后的输出没有'Kiev'。我们对此并不感到惊讶,因为代码中没有修改cities列表。在您的例子中,您有一个for循环,但是它是相同的。for循环中没有将其变量与原始列表关联的魔术。因此,在for循环中更改city变量的值并不会更改cities列表。

票数 1
EN

Stack Overflow用户

发布于 2022-06-13 21:39:21

在每个迭代中,城市将被列表中的下一项覆盖。

如果你想让马德里成为基辅,那就试试这个:

代码语言:javascript
复制
for i, city in enumerate(cities):
    if city == 'Madrid':
         cities[i] = "Kiev"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72609315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档