我有一个Python列表:
k = [[1, 2], [4], [5, 6, 2], [1, 2], [3], [4]]
Run Code Online (Sandbox Code Playgroud)
我想从中删除重复的元素.如果它是一个正常的列表而不是我可以使用的列表set.但不幸的是,该列表不可清除,也无法制作一组列表.只有元组.所以我可以将所有列表转换为元组,然后使用set并返回列表.但这并不快.
如何以最有效的方式完成?
上面列出的结果应该是:
k = [[5, 6, 2], [1, 2], [3], [4]]
Run Code Online (Sandbox Code Playgroud)
我不关心保留秩序.
注意:这个问题很相似,但不是我需要的.搜索了SO但没有找到确切的重复.
标杆:
import itertools, time
class Timer(object):
def __init__(self, name=None):
self.name = name
def __enter__(self):
self.tstart = time.time()
def __exit__(self, type, value, traceback):
if self.name:
print '[%s]' % self.name,
print 'Elapsed: %s' % (time.time() - self.tstart)
k = [[1, 2], [4], [5, 6, 2], [1, 2], [3], [5, 2], [6], …Run Code Online (Sandbox Code Playgroud) 我有两个形状相同的清单清单。
list1 = [[1,2,3], [], [4,5], []]
list2 = [[1,2], [7], [4,5], []]
Run Code Online (Sandbox Code Playgroud)
我需要以下列表列表:
[[1,2], [], [4,5], []]
Run Code Online (Sandbox Code Playgroud)
我如何得到它?
PS:这些主题对我没有帮助:
任务是在2个列表中找到相等元素的数量,这些列表包含列表.我有两个看起来像的列表
DNF1=[[4], [12], [20], [28,32], [36], [44], [52,54], [60,4],[60,24]]
DNF2=[[16], [20,60], [24], [28,32], [48], [52], [56,58], [60,4]]
Run Code Online (Sandbox Code Playgroud)
此代码不起作用,因为参数是列表:
count=sum(1 for k in DNF1 if k in DNF2)
Run Code Online (Sandbox Code Playgroud)
我该怎么写
func(DNF1,DNF2)
Run Code Online (Sandbox Code Playgroud)
将返回
[[28,32],[60,4]]
Run Code Online (Sandbox Code Playgroud)
或只是'2'(交叉点中的元素数量)