在Python 2.7中将一个列表中的项索引附加到另一个列表中

时间:2015-04-14 17:35:29

标签: python list

Master =[23,5, 6, 34,11]
List_check = [23, 6, 11]

理想的输出是:

Location = [0, 2, 4 ]

list_check中的值始终为master。忽略重复。

3 个答案:

答案 0 :(得分:0)

使用列表理解:

Location = [Master.index(item) for item in Master if item in List_check]

您还可以使用以下内容:

Location = [Master.index(x) for x in List_check]

但如果List_checkMaster中的项目 <{1}},则会收到IndexError


>>> Master =[23,5, 6, 34,11]
>>> List_check = [23, 6, 11]
>>> [Master.index(item) for item in Master if item in List_check]
[0, 2, 4]
>>> [Master.index(x) for x in List_check]
[0, 2, 4]
>>> 

答案 1 :(得分:0)

另一种方法:

Master = [23, 5, 6, 34, 11] 
List_check = [23, 6, 11]
Location = [x for x, y in enumerate(Master) if y in List_check]
print Location

出:

[0, 2, 4]

答案 2 :(得分:0)

通过列表理解,您可以轻松获得所需的特定列表的输出,正如您可以从其他答案中看到的那样,但是,您说您想忽略重复。我知道列表理解无法做到这一点。例如,使用此处建议的列表推导之一,并在Master

中使用重复元素
>>> Master =[23,5, 6, 34, 11, 23]
>>> List_check = [23, 6, 11]
>>> [Master.index(item) for item in Master if item in List_check]
[0, 2, 4, 0]

使用其他建议:

>>> Location = [x for x, y in enumerate(Master) if y in List_check]
[0, 2, 4, 5]

如果我正确理解您的问题,无论元素在Master中出现多少次,您都希望结果相同。例如,

Master =[23,5, 6, 34, 11, 23, 23, 11, 6]
List_check = [23, 6, 11]

输出

Location = [0, 2, 4]

我会这样做:

Master =[23, 5, 6, 34, 11, 23, 23, 11, 6]
List_check = [23, 6, 11]

Location = []
for element in List_check:
    if element in Master:
        for k in range(len(Master)):
            if Master[k] == element:
                Location.append(k)
                break

使用上面使用的MasterList_check,输出确实是

Location = [0, 2, 4]