Master =[23,5, 6, 34,11]
List_check = [23, 6, 11]
理想的输出是:
Location = [0, 2, 4 ]
list_check中的值始终为master。忽略重复。
答案 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_check
中Master
中的项目 <{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
使用上面使用的Master
和List_check
,输出确实是
Location = [0, 2, 4]