如何获得Python中'in'语句的索引
这个问题在这里已经有了答案:
要避免一个循环,可以使用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
,因为它会将您的迭代器分解为其最小迭代(字符串为字母)。
上一篇: How to get the index in the 'in' statement in Python
下一篇: How to select elements in the intersection of two lists in Python