Python:从具有最大长度的子列表中返回前 n 个列表

标签 python python-3.x list list-comprehension

我有一个列表列表,其中每个子列表都是一个对象列表。 任务是按长度降序返回前 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)

关于Python:从具有最大长度的子列表中返回前 n 个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46330534/

相关文章:

python - python中的割线法函数

python - 从字符串 python 创建单项元组

python - 如何通过python查找矩阵的特征多项式?

python - Pytest:使用使用另一个 fixture 作为输入的 fixture 参数化单元测试

python - 如何创建导入最常用的 python 模块的快捷方式?

c# - 如何创建列表<编译时未知类型>并通过 System.Reflection.PropertyInfo 复制项目

python - 在 Python 中搜索字典列表的有效方法

python - cxfreeze 在 vi​​rtualenv 中缺少 distutils 模块

arrays - Haskell:List v. Array,性能差异

python - 类型错误 : descriptor '__weakref__' doesn't apply to object from parent __str__ method