如何获得Python中'in'语句的索引

这个问题在这里已经有了答案:

  • 在Python中找到一个包含它的列表的索引23个答案

  • 要避免一个循环,可以使用try-except子句(不使用if ... in ...:

    try:
        i = vocab.index(word)
    except ValueError as e:
        print e # Optional
        i = -1
    

    这是一个我希望我可以在if语句中进行赋值的情况,但我不能这样做,因为这是解决方案:

    如果vocab是一个list

    try:
        index = vocab.index(word)
    except ValueError:
        pass
    else:
        print index, word
    

    如果vocab是一个str

    index = vocab.find(word)
    if index >= 0:
        print index, word
    

    def getindex(iterable,target):
        for idx,value in enumerate(iterable):
            if value==target: return idx
        return -1
    

    请注意,如果你试图在一个字符串中查找一个子字符串,这是行不通的(正如我假设的那样,因为if word in vocab你使用的是if word in vocab ,那么你应该这么做:

    try: idx = iterable.index(target)
    except ValueError as e: # Not found
        # Handle it
    

    如果您尝试使用上面的getindex函数,它将始终为任何值len(target) > 1返回-1 ,因为它会将您的迭代器分解为其最小迭代(字符串为字母)。

    链接地址: http://www.djcxy.com/p/28111.html

    上一篇: How to get the index in the 'in' statement in Python

    下一篇: How to select elements in the intersection of two lists in Python