是否存在任何内置方法作为列表的一部分,它将为我提供某些值的第一个和最后一个索引,例如:
verts.IndexOf(12.345)
verts.LastIndexOf(12.345)
序列有一个方法index(value)
,它返回第一次出现的索引 - 在你的情况下,这将是verts.index(value)
。
你可以在verts[::-1]
上运行它来找出最后一个索引。在这里,这将是len(verts) - 1 - verts[::-1].index(value)
使用i1 = yourlist.index(yourvalue)
和i2 = yourlist.rindex(yourvalue).
如果您正在搜索myvalue
中最后一次出现的mylist
的索引:
len(mylist) - mylist[::-1].index(myvalue) - 1
作为一个小帮手功能:
def rindex(mylist, myvalue):
return len(mylist) - mylist[::-1].index(myvalue) - 1
这种方法可以比上面更优化
def rindex(iterable, value):
try:
return len(iterable) - next(i for i, val in enumerate(reversed(iterable)) if val == value) - 1
except StopIteration:
raise ValueError
Python列表具有index()
方法,您可以使用该方法查找列表中项目第一次出现的位置。请注意,当在列表中找不到值时,list.index()
会引发ValueError
,因此您可能希望将其包装在try
/ except
中:
try:
idx = lst.index(value)
except ValueError:
idx = None
要有效地找到列表中最后一个项目的位置(即不创建反转列表),您可以使用此函数:
def rindex(lst, value):
for i, v in enumerate(reversed(lst)):
if v == value:
return len(lst) - i - 1 # return the index in the original list
return None
print(rindex([1, 2, 3], 3)) # 2
print(rindex([3, 2, 1, 3], 3)) # 3
print(rindex([3, 2, 1, 3], 4)) # None