我有一个列表列表,其中每个子列表都是对象列表。 这个任务是按照长度从大到小的顺序返回前n个子列表。Python:从最大长度的子列表中返回前n个列表
插图:
[[{},{},{},{}],[{},{},{}],[{},{}],[{}],[]]
对于上面,我想回到前3子列表列表按长度,这是
[[{},{},{},{}],[{},{},{}],[{},{}]]
为子列表有最大长度为3 ,2,1分别从名单中。
我有一个列表列表,其中每个子列表都是对象列表。 这个任务是按照长度从大到小的顺序返回前n个子列表。Python:从最大长度的子列表中返回前n个列表
插图:
[[{},{},{},{}],[{},{},{}],[{},{}],[{}],[]]
对于上面,我想回到前3子列表列表按长度,这是
[[{},{},{},{}],[{},{},{}],[{},{}]]
为子列表有最大长度为3 ,2,1分别从名单中。
你有两种可能的选择,让我们说:
l = [[{},{},{},{}],[{},{},{}],[{},{}],[{}],[]]
您可以产生一个全新的列表,并采取所需的3个要素:
sorted(l, key=len, reverse=True)[:3]
或者,您可以排序您的原始清单,他们采取前3个元素:
l.sort(key=len, reverse=True)
l[:3]
就性能而言,第二个选项似乎更快:
In [1]: %timeit sorted(l, key=len, reverse=True)[:3]
1.9 µs ± 28.1 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
In [2]: %%timeit
...: l.sort(key=len, reverse=True)
...: l[:3]
...:
1.22 µs ± 33.8 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
这里的任务是返回一个列表(不能修改问题)。所以'''分类''会套房更多。 – Siddharth
@Siddharth,我同意,但从性能的角度来看,修改列表似乎比制作新列表的副本要快。 – lmiguelvargasf
@ lmiguelvargasf只是upvoted你的答案相同 – Siddharth