Python 从另一个序列对象查找序列对象中元素的索引

Python 从另一个序列对象查找序列对象中元素的索引,python,list,indexing,Python,List,Indexing,这里,series2始终是series1的子集。我想从series1中找到series2中元素的索引 series1= [11,22,3,4,5,33,7] series2= [11,22,33] c=[] for i in series2: if i in series1: c.append(series1.index[i]) print(c) 预期产出:[0,1,5] 但我在输出中得到一个空白列表。您可以在这里指出错误。您可以使用列表理解和枚举,将系列2定义为集

这里,series2始终是series1的子集。我想从series1中找到series2中元素的索引

series1= [11,22,3,4,5,33,7]
series2= [11,22,33]


c=[]
for i in series2:
    if i in series1:
        c.append(series1.index[i])
print(c)
预期产出:[0,1,5]
但我在输出中得到一个空白列表。您可以在这里指出错误。

您可以使用列表理解和
枚举
,将
系列2
定义为
集合
,以降低查找复杂性:

series2= set([11,22,33])
[ix for ix,i in enumerate(series1) if i in series2]
# [0, 1, 5]

根据您的方法,有两件事是错误的:

  • 您应该先迭代
    series1
    ,然后迭代
    series2
  • list.index
    如果是函数,则不能订阅。您应该使用
    list.index(项目)

我建议您检查数据结构,以便更清楚地了解这些点

您可以使用列表理解和
枚举
,将
系列2
定义为
集合
,以降低查找复杂性:

series2= set([11,22,33])
[ix for ix,i in enumerate(series1) if i in series2]
# [0, 1, 5]

根据您的方法,有两件事是错误的:

  • 您应该先迭代
    series1
    ,然后迭代
    series2
  • list.index
    如果是函数,则不能订阅。您应该使用
    list.index(项目)

我建议您检查数据结构以更清楚地了解这些要点

您需要将c.append(series1.index[I])更改为c.append(series1.index(I))


您需要将c.append(series1.index[i])更改为c.append(series1.index(i))


答案有用吗?别忘了你可以投票并接受答案。看,谢谢!答案有用吗?别忘了你可以投票并接受答案。看,谢谢!