从另一个系列对象向上获取系列对象中元素的索引。

问题描述 投票:0回答: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]但我的输出是一个空白的列表。[0,1,5]但我在输出中得到一个空白的列表。你能不能指出这里的错误。

python indexing series
2个回答
2
投票

你可以使用列表理解法,用 enumerate,定义 series2 作为 set 来降低查找的复杂性。

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(item)

我建议你检查一下 文件 在数据结构上,要对这些点有更清晰的认识。


0
投票

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

In [3]: 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]
© www.soinside.com 2019 - 2024. All rights reserved.