Python 相互参照清单索引

Python 相互参照清单索引,python,numpy,Python,Numpy,我正在交叉引用两个列表,以找出两个列表中哪些项目是一致的。第一个列表orig的大小是32个项目,我将它与一个更大的列表sdss交叉引用,这个列表的大小是112000个项目。到目前为止,我得到的是: for i in range(0,len(orig),1): if orig[i] in sdss: print('\n %s' % (orig[i])) 这给了我两个列表之间相同的项目,但是,我如何有效地返回sds列表(较大的列表)中交叉引用项目的索引(或位置) 编辑:我想

我正在交叉引用两个列表,以找出两个列表中哪些项目是一致的。第一个列表
orig
的大小是32个项目,我将它与一个更大的列表
sdss
交叉引用,这个列表的大小是112000个项目。到目前为止,我得到的是:

for i in range(0,len(orig),1):
    if orig[i] in sdss:
        print('\n %s' % (orig[i]))
这给了我两个列表之间相同的项目,但是,我如何有效地返回
sds
列表(较大的列表)中交叉引用项目的索引(或位置)


编辑:我想我应该说得更清楚些。实际上,我正在使用int而不是字符串交叉引用两个数组。

您可以使用
.find()
,它给出列表中某项的索引,但失败时返回-1:

for item in orig:
    index = sdss.find(item)
    if index != -1:
        print("\n %d" % index)
我修改了迭代的方式,因为您不需要在
orig
中使用索引;你需要每件物品。顺便说一句,您可以使用
范围(len(orig))
,因为您的开始参数和步骤参数已经是默认值。

您可以使用
.find()
,它给出列表中项目的索引,但失败时返回-1:

for item in orig:
    index = sdss.find(item)
    if index != -1:
        print("\n %d" % index)

我修改了迭代的方式,因为您不需要在
orig
中使用索引;你需要每件物品。顺便说一句,您可以使用
range(len(orig))
,因为您的开始参数和步骤参数已经是默认值。

如果顺序不重要,您可以使用set intersection查找唯一的公共元素,并通过列表理解将索引和元素作为元组

[(sdss.index(common_element),common_element) for common_element in set(orig) & set(sdss)]
请注意,如果在列表中找不到该值,则“索引”将引发ValueError,但在这种情况下,该值将存在于SDS中。因此,不需要担心不存在的元素抛出错误


您还可以使用

如果顺序不重要,您可以使用集合交集来查找唯一的公共元素,并使用列表理解来获取索引和元素作为元组

[(sdss.index(common_element),common_element) for common_element in set(orig) & set(sdss)]
请注意,如果在列表中找不到该值,则“索引”将引发ValueError,但在这种情况下,该值将存在于SDS中。因此,不需要担心不存在的元素抛出错误


您还可以使用

这些元素在输入列表中是否已排序且唯一?这些元素在输入列表中是否已排序且唯一?我想我应该更清楚。我实际上是在交叉引用两个int数组(不是字符串)。上述解决方案是否仍然有效?我想我应该更清楚。我实际上是在交叉引用两个int数组(不是字符串)。上述解决方案是否仍然有效?