我有一个类似的问题:Determine if 2 lists have the same elements, regardless of order?
确定未排序的列表list1
是否包含在“列表列表”myListOfLists
中的最佳/最快速方法是什么,而不管list1
中元素的顺序如何?我的尝试包含在我多次调用的函数doSomething(...)
中:
def doSomething(myListOfLists, otherInputs):
list1 = []
... # do something here with `otherInputs'
... # which gives `list1' some values
# now only append `list1' to `myListOfLists' if it doesn't already exist
# and if it does exist, remove it
removeFromList = False
for myList in myListOfLists:
if sorted(list1) == sorted(myList):
removeFromList = True
break
if removeFromList:
myListOfLists.remove(list1)
else:
myListOfLists.append(list1)
return myListOfLists
问题是我需要运行函数doSomething(...)
大约1.0e5次。随着myListOfLists
随着doSomething(...)
的每次调用变得越来越大,这就变得非常耗时。你知道吗
编辑:
对任务的一些澄清。让我举一个期望输出的例子:
a = []
doSomething(a, [1,2,3])
>> a = [1,2,3]
因为[1,2,3]
不在a
中,所以它被附加到a
。你知道吗
doSomething(a, [3,4,5])
>> a = [[1,2,3], [3,4,5]]
因为[3,4,5]
不在a
中,所以它被附加到a
。你知道吗
doSomething(a, [1,2,3])
>>[3,4,5]
因为[1,2,3]
是a
中的,所以它被从a
中删除。你知道吗
编辑:
所有列表长度相同。你知道吗
如果对给定列表排序,然后将其附加到
myListOfLists
,则可以使用以下方法:使用集合
您可以在此处使用集合:
更新1:任何子列表都包含与
otherInputs
完全相同的项。你知道吗更新2:
otherInputs
是任何子列表的子集:相关问题 更多 >
编程相关推荐