0

我需要检查某个特定属性的子列表,然后返回满足该属性的 bin,但作为原始列表的索引。目前我不得不手动执行此操作:

sublist = mylist[start:end]

positive = search(sublist)
positive = start + positive 
posiveList.append(positive)

有没有更优雅/惯用的方法来实现这一点?

4

3 回答 3

2

我想你要问的是:

如果我在子列表中搜索并找到索引,是否有一种直接的方法可以将其转换为原始列表中的索引?

不,唯一的方法是您已经在做的事情:您需要将start偏移量添加回索引以获取原始列表中的索引。

这是有道理的,因为子列表和原始列表之间没有实际关联。以这个例子为例:

>>> x = [1,2,3,4,5]
>>> y = x[1:3]
>>> z = [2,3]
>>> y == z
True

z与 的关系 与 的 关系x一样yx。即使y是使用切片语法创建的,它也只是其中一系列元素的副本x——它只是一个普通列表,并没有对原始列表的实际引用xx由于和之间没有关系,因此无法从 -index 中取回y原始y-index 。xy

于 2013-07-04T18:05:58.333 回答
1

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.

于 2013-07-04T17:41:57.440 回答
0

如果您的搜索运算符支持它或可以修改以支持它,search(wholelist, startfrom, endat)则应返回实际索引。

于 2013-07-04T18:22:08.980 回答