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)