我想在主列表中创建一个新列表,除了其他列表中的元素
下面如何在python 2.7中进行操作。有没有快速内置功能呢?
Input (Mainlist) :[['P', ['not', 'R']], [['not', 'Q'], ['not', 'R'], 'P']]
Input (Otherlist) : ['P', ['not', 'R']]
Output (NewlistIwant) : [['not', 'Q']]
即主要列表中的所有内容,除了两个项目' P'和[' not'' R']
答案 0 :(得分:1)
如果我理解你,你有一个列表列表,每个列表都有一些字符串和列表的组合。您想要删除内容列表中另一个列表中的所有内容。
以下代码适用于我。
>>> mainlist = [['P', ['not', 'R']], [['not', 'Q'], ['not', 'R'], 'P']]
>>> otherlist = ['P', ['not', 'R']]
>>> def filter_list():
newlist = []
for list_ in mainlist:
for item in list_:
if item not in otherlist:
newlist.append(item)
return newlist
>>> filter_list()
[['not', 'Q']]
请注意,这不安全 - 如果你改变旧列表,你就会搞砸新列表。
>>> a = filter_list()
>>> mainlist[1][0][1] = 'L'
>>> a
[['not', 'L']]
目前还不清楚你是否想要这种行为。
答案 1 :(得分:0)
您可以使用列表理解:
[element for element in MainList if element not in OtherList]
答案 2 :(得分:0)
在下面使用:
def getRemainingLiterals(prop):
remainingList = []
for item in prop:
if isinstance(item, list): #list
for literal1 in item:
if literal1 not in deletedList:
remainingList.append(literal1)
else: #str
if item not in deletedList :
remainingList.append(item)
return remainingList