在列表中查找字符串的索引号

时间:2020-11-05 17:41:54

标签: python

我有:

name = ["a","a","b","c","a","b","c","d","d","e","e","f"]

并且我想要索引号为"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

我收到此错误。

5 个答案:

答案 0 :(得分:3)

获取索引号“ a”

使用for循环

name = ["a","a","b","c","a","b","c","d","d","e","e","f"]
i = 0 # used to store index
for n in name:
    if n == 'a':
        print(i) # print the index of found value
    i += 1

使用列表理解

$ 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]

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)

为什么索引错误

让我们来看看列表的索引功能会发生什么。

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.

我们可以看到列表包含value,其中包含2个可选参数startstop startstop检查给定列表L的子列表。如果L中不存在该值,那么我们将得到一个索引错误。例如,给定您的代码:

name = ["a","a","b","c"]

for i in range(0,len(name)):

    a = name.index("a",i,len(name))    
    print(a)

index将按此顺序为每个子列表寻找"a"

  • [“ a”,“ a”,“ b”,“ c”]
  • [“ a”,“ b”,“ c”]
  • [“ b”,“ c”]

第三个列表将返回错误,因为列表中不再包含"a"

答案 1 :(得分:0)

您可以遍历字符串:

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]

答案 2 :(得分:0)

如果要在列表中包含元素的所有索引,则可以使用以下方法:

location.href

输出:

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)

答案 3 :(得分:0)

index函数从列表的开头搜索给定的元素,并返回该元素出现的最低索引。

list.index()函数在找不到时返回错误

开始(可选)-搜索开始的位置。 end(可选)-搜索结束的位置。

len(name)是12 循环运行函数name.index(“ a”,5,12)时出现错误。 并且在此范围内,列表中没有“ a”字符。

您可以使用try catch处理错误

for i in range(0, len(name)):
    try:
        a = name.index("a", i, len(name))
        print(a)
    except ValueError as err:
        print(err)

答案 4 :(得分:-1)

您可以使用枚举和if语句:

name = ["a","a","b","c","a","b","c","d","d","e","e","f"]
for i in enumerate(name):
    if i[1]=="a": print(i[0])