python - 为什么 Python 列表没有连续重复元素的唯一索引?
问题描述
我正在存储一个包含元素 [0, 1, 2, 3, 4, 4] 的列表。当我遍历它并打印每个元素索引时,我的输出是这样的
0
1
2
3
4
4
我只是想如果它只是打印元素所以我尝试了另一个输入 [1,2,3,4,5,6,7] 这一次我得到了正确的索引
0
1
2
3
4
5
6
为什么会发生这种情况,我该如何解决?
n=input()
l=list(input().split())
print(l)
for i in l:
print(l.index(i))
预期输出:
0
1
2
3
4
5
实际输出:
0
1
2
3
4
4
解决方案
索引未按预期工作
.index()
不会返回数组中项目的索引,它会返回值的第一个索引或位置(参见this)。
在您的代码中
l = [0, 1, 2, 3, 4, 4]
for i in l:
print(l.index(i)) #i is the value itself
实际发生的是,每次它都在搜索 value 的第一次出现i
。在 list 中l = [0, 1, 2, 3, 4, 4]
,当你到达最后 4 个时,你实际上是要求 Python 给你“4
列表中第一次出现的l
”,所以 python 给你“索引”4。
在 JavaScript 中,它相当于array.indexOf(val)
.
您似乎在寻找什么 :枚举函数
for ind, val in enumerate(l):
...
推荐阅读
- groovy - 为什么 CTL 在 Apache NiFi 1.10.0 的 ExecuteGroovyScript 处理器中不起作用?
- angular - core.js:4002 错误类型错误:无法读取未定义的属性 ***
- python - 在 Python 中,函数将作为成员传递给对象。函数中是否有引用未来对象的占位符?
- node.js - 验证路径时在 Node 中导航 JSON 的最佳方式
- .net - Azure 函数读取自定义文件
- c# - Visual Studio 2019 连接到 Access 数据库 - Microsoft.ACE.OLEDB.12.0 提供程序未在本地计算机上注册
- json - 如何从 Angular 8 中的接口创建新的递归 json 对象
- android - Volley 与 SDK 28 不兼容
- bash - 在 shell 脚本中读取属性文件时出现问题
- javascript - 带有输入事件侦听器和页面加载的单次获取请求