python - 循环中的变量“i”是什么?
问题描述
我在编码挑战中看到了以下代码,我不知道为什么它返回 3,但请检查代码并告诉我你的想法。
myList = [1,2,3,4]
for i in myList:
i += 1
print(myList[-2])
当我看到代码时,我说它会打印 4,因为在循环中我们在列表中的所有整数中添加了 1,并且[-2]
应该给我倒数第二个值,根据我的想法是 4。
我知道我在这里遗漏了一些东西,但我不知道它是什么,所以如果有人可以向我解释这一点,我将不胜感激。可能我不明白i
,我不确定。
解决方案
解释
该行:
for i in myList
迭代list的项目myList
,而不是索引。
其中加一的行i += 1
不会将新值分配给列表,因此保持不变。
怎么修
但是,如果我们更改代码以迭代索引:
for i in range(len(myList))
我们现在可以更改列表中的值:
myList[i] += 1
代码修复:
myList = [1,2,3,4]
for i in range(len(myList)):
myList[i] += 1
# 4
print(myList[-2])
一些忠告
在 Python 中使用小写、下划线分隔的名称来命名变量很方便。
myList
也会如此my_list
。
它不会改变程序的行为方式,但对你未来的队友来说更具可读性。
推荐阅读
- mysql - 由于缺少权限,MySQL 路由器 8.0.19 引导失败
- testing - 如何让 Espresso 测试等到页面加载
- keycloak - Keycloak 偶尔会给我一个 401 Unauthorized 错误
- go - clientcmd.BuildConfigFromFlags 的返回类型
- javascript - 如何在 node-imap 中获取回复的回复?
- php - 在此服务器上找不到请求的 URL /,MAMP MAC
- php - 使用 PHP 获取具有提供的开始时间、频率的时间范围数组
- c# - 如何在 python 中调用 c# dll 时传递 keyValuePair[]?
- node.js - 无法使用 Serverless 在 Lambda 上部署 Mapbox GL Native
- apache - (已解决)子目录上的 Apache2 Basic Auth 不提示进行身份验证