我根本找不出为什么它是这样工作的:
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]它应该有的东西。
但如果我这么做
cities = ['Madrid', 'Barcelona', 'Valencia', 'Murcia']
for city in cities:
if city == 'Madrid':
print('hey')
city = 'Kiev'
print(cities)结果如下:
hey
['Madrid', 'Barcelona', 'Valencia', 'Murcia']因此,它识别'Madrid',因此打印hey,但不将'Kiev'分配给它。然而,在第一个例子中,使用索引范围,重新分配是完美的。
发布于 2022-06-13 22:01:40
让我们看一段类似的代码:
cities = ['Madrid', 'Barcelona', 'Valencia', 'Murcia']
city = cities[0]
city = 'Kiev'
print(cities)输出:
['Madrid', 'Barcelona', 'Valencia', 'Murcia']在这里,最后的输出没有'Kiev'。我们对此并不感到惊讶,因为代码中没有修改cities列表。在您的例子中,您有一个for循环,但是它是相同的。for循环中没有将其变量与原始列表关联的魔术。因此,在for循环中更改city变量的值并不会更改cities列表。
发布于 2022-06-13 21:39:21
在每个迭代中,城市将被列表中的下一项覆盖。
如果你想让马德里成为基辅,那就试试这个:
for i, city in enumerate(cities):
if city == 'Madrid':
cities[i] = "Kiev"https://stackoverflow.com/questions/72609315
复制相似问题