我需要检查某个特定属性的子列表,然后返回满足该属性的 bin,但作为原始列表的索引。目前我不得不手动执行此操作:
sublist = mylist[start:end]
positive = search(sublist)
positive = start + positive
posiveList.append(positive)
有没有更优雅/惯用的方法来实现这一点?
我需要检查某个特定属性的子列表,然后返回满足该属性的 bin,但作为原始列表的索引。目前我不得不手动执行此操作:
sublist = mylist[start:end]
positive = search(sublist)
positive = start + positive
posiveList.append(positive)
有没有更优雅/惯用的方法来实现这一点?
我想你要问的是:
如果我在子列表中搜索并找到索引,是否有一种直接的方法可以将其转换为原始列表中的索引?
不,唯一的方法是您已经在做的事情:您需要将start
偏移量添加回索引以获取原始列表中的索引。
这是有道理的,因为子列表和原始列表之间没有实际关联。以这个例子为例:
>>> x = [1,2,3,4,5]
>>> y = x[1:3]
>>> z = [2,3]
>>> y == z
True
z
与 的关系 与 的 关系x
一样y
多x
。即使y
是使用切片语法创建的,它也只是其中一系列元素的副本x
——它只是一个普通列表,并没有对原始列表的实际引用x
。x
由于和之间没有关系,因此无法从 -index 中取回y
原始y
-index 。x
y
If I understood you correctly, you want to save indexes of all matching element.
If so, then think you are looking for this:
positiveList = [i for i, item in enumerate(mylist[start:end])
if validate_item(item)]
Where validate_item
should essentially check whether this item is required or not and return True/False.
如果您的搜索运算符支持它或可以修改以支持它,search(wholelist, startfrom, endat)
则应返回实际索引。