2016-01-23 132 views
-5

这里我需要比较list1项目和list2项目,如果一个项目错过了,那么我想插入False错过list1的项目索引。在python中重新排序列表

我输入

list1 = [1,2,3,4] 
list2 = [3,1,4] 

的例外输出

result = [1, False, 3, 4] 

我尝试这样做:

result = [] 
for x in list1: 
    for i in xrange(0,len(list2)): 
     if set(x) == set(list2[i]): 
      result.append(x) 
+0

如果列表有重复项,该怎么办? – thefourtheye

+8

请不要**对您的问题做出重大修改,使其现有答案无效。 –

+3

考虑创建一个新问题。在你的新问题中,你需要解释你的输入列表之间的关系,因为目前还不清楚你为什么会期望输出。 –

回答

2

使用list comprehension

In [620]: [i if i in list2 else False for i in list1] 
Out[620]: [1, False, 3, 4] 

如果你不熟悉list comprehensions可以使用溶液循环:

result = [] 
for x in list1: 
    if x in list2: 
     result.append(x) 
    else: 
     result.append(False) 

print(result) 
[1, False, 3, 4] 
2

很简单使用做一个在if conditional expression一个list comprehension

>>> list1 = [1, 2, 3, 4] 
>>> list2 = [3, 1, 4] 
>>> res = [i if i in list2 else False for i in list1] 
>>> print(res) 
[1, False, 3, 4] 

这样做是需要每一个元素在list1列表中,并检查它是否为in第二个列表list2。如果是,则返回项目i本身,如果不是则返回False