这里,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]但我在输出中得到一个空白的列表。你能不能指出这里的错误。
你可以使用列表理解法,用 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)
我建议你检查一下 文件 在数据结构上,要对这些点有更清晰的认识。
你需要将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]