我写了一个if
语句,如:
if word in vocab:
print word
但是,我也想知道word
中匹配的vocab
索引。
Python中有什么方法可以做到这一点吗?
我刚刚提出了一个使用vocab.index(word)
来获取索引的解决方案,但这种方式通过数组两次(一个在if
语句中,一个调用index()
)。我想知道应该有更多的效率方法。
感谢。
答案 0 :(得分:5)
要避免一个循环,您可以使用try-except
子句(不使用if ... in ...:
)
try:
i = vocab.index(word)
except ValueError as e:
print e # Optional
i = -1
答案 1 :(得分:2)
这是一个我希望我可以在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
答案 2 :(得分:2)
def getindex(iterable,target):
for idx,value in enumerate(iterable):
if value==target: return idx
return -1
请注意,如果您尝试在字符串中查找子字符串,这将无法工作(正如我所假设的那样,因为您正在执行if word in vocab
。在这种情况下,您确实应该这样做:
try: idx = iterable.index(target)
except ValueError as e: # Not found
# Handle it
如果您尝试使用上面的getindex
函数,它将始终返回-1
任何值len(target) > 1
,因为它会将您的iterable分解为最小的迭代,这是一个字母对于字符串。
答案 3 :(得分:1)