Python 正在查找列表中字符串的索引编号
我有: 我想要有Python 正在查找列表中字符串的索引编号,python,Python,我有: 我想要有“a”的索引号 范围(0,len(name))中的i的: a=名称索引(“a”,i,len(名称)) 印刷品(a) 0 1. 4. 4. 4. --------------------------------------------------------------------------- ValueError回溯(最近一次调用上次) 在里面 1表示范围(0,len(name))中的i: ---->2a=名称索引(“a”,i,len(名称)) 3印刷品(a) ValueErr
“a”
的索引号
范围(0,len(name))中的i的:
a=名称索引(“a”,i,len(名称))
印刷品(a)
0
1.
4.
4.
4.
---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在里面
1表示范围(0,len(name))中的i:
---->2a=名称索引(“a”,i,len(名称))
3印刷品(a)
ValueError:“a”不在列表中
我得到了这个错误。您可以循环字符串:
for i in range(0,len(name)):
a = name.index("a",i,len(name))
print(a)
0
1
4
4
4
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-29-db6d8b18d6e6> in <module>
1 for i in range(0,len(name)):
----> 2 a = name.index("a",i,len(name))
3 print(a)
ValueError: 'a' is not in list
输出
name = ["a","a","b","c","a","b","c","d","d","e","e","f"]
idx = [i for i in range(len(name)) if name[i] == 'a']
print(idx)
如果您想要列表中元素的所有索引,可以使用:
[0, 1, 4]
输出:
name = ["a","a","b","c","a","b","c","d","d","e","e","f"]
indices = [iter for iter,item in enumerate(name) if item=="a"]
print(indices)
您可以使用enumerate和if语句:
[0, 1, 4]
获取“a”的索引号
使用for循环
使用列表理解
其中,i,v
分别是名称列表中的索引和值
修改原始代码
为什么索引错误
让我们看看列表的索引函数发生了什么
for i in range(0,len(name)):
if "a" in name[i:]: # added an if statement to check if a exist in the sublist
a = name.index("a",i,len(name))
print(a)
我们可以看到列表包含值
,带有两个可选参数开始
和停止
start
和stop
检查给定列表的子列表L
。如果L
中不存在该值,则会得到一个索引错误。例如,给定您的代码:
index(...) method of builtins.list instance
L.index(value, [start, [stop]]) -> integer -- return first index of value.
Raises ValueError if the value is not present.
索引
将按此顺序为每个子列表查找“a”
- [“a”、“a”、“b”、“c”]
- [“a”、“b”、“c”]
- [“b”、“c”]
第三个列表将返回一个错误,因为
“a”
不再在列表中。索引函数从列表开始搜索给定元素,并返回元素出现的最低索引
函数在找不到时返回错误
开始(可选)-搜索开始的位置。
结束(可选)-搜索结束的位置
莱恩(名字)12岁
循环运行function name.index(“a”,5,12)时出现错误。
在此范围内,列表中没有“a”字符
您可以使用try-catch来处理错误
name = ["a","a","b","c"]
for i in range(0,len(name)):
a = name.index("a",i,len(name))
print(a)
为什么您的代码有
name.index(…)
,但错误消息显示malik.index(…)
?从,list.index()
“在值等于x的第一个项的列表中返回零基索引。如果没有这样的项,则引发ValueError。”当它到达错误位置时,不再有“a”
在索引以外的列表中i
。为什么您会对它的行为如文档所示感到惊讶?使用enumerate将更具Python风格。谢谢@mkrieger1,我已尽了最大努力!谢谢,谢谢你的解释
$ name = ["a","a","b","c","a","b","c","d","d","e","e","f"]
$ [i for i, v in enumerate(name) if v == "a"]
[0, 1, 4]
for i in range(0,len(name)):
if "a" in name[i:]: # added an if statement to check if a exist in the sublist
a = name.index("a",i,len(name))
print(a)
index(...) method of builtins.list instance
L.index(value, [start, [stop]]) -> integer -- return first index of value.
Raises ValueError if the value is not present.
name = ["a","a","b","c"]
for i in range(0,len(name)):
a = name.index("a",i,len(name))
print(a)
for i in range(0, len(name)):
try:
a = name.index("a", i, len(name))
print(a)
except ValueError as err:
print(err)