如何在python中有效地从列表中删除samelength元素

2024-04-26 21:26:05 发布

您现在位置:Python中文网/ 问答频道 /正文

例如,我有一个列表:

[[1,3],[23,4],[13,45,6],[8,3],[44,33,12]]

有没有什么有效的方法能让我最终得到下面的清单?你知道吗

[[1,3],[13,45,6]]

对于列表的每一个长度,只保留一个元素。你知道吗


Tags: 方法元素列表
3条回答

然后总是有显式递归。。。你知道吗

>>> l = [[1,3],[23,4],[13,45,6],[8,3],[44,33,12]]
>>> def f(x):
...     if x == []: return []
...     else      : return [x[0]] + f( filter(lambda m:len(m)!=len(x[0]),x) )
... 
>>> f(l)
[[1, 3], [13, 45, 6]]

s = set() [e for e in l if len(e) not in s and s.add(len(e)) is None]

只需在字典中键入长度并获取其值:

>>> l = [[1,3],[23,4],[13,45,6],[8,3],[44,33,12]]
>>> dict((len(i), i) for i in l).values()
[[8, 3], [44, 33, 12]]

相关问题 更多 >