Skip to main content
 首页 » 编程设计

python之我可以快速获得 python 列表中最内部子列表的最小长度吗

2025年05月04日14over140

This显示了如何获取一级内部列表的最小长度。

如何为这个列表返回 4 b=[[1,0,1,2,1,1,1,3111111,[1,1,6,7]],[31,1,4,51,1,1,1], [1,1,6,7,8]] 因为 [1,1,6,7] 只有 4 个元素。

我可以运行一个 for 循环来获取它。但它能更简单吗?

我的意思是“与最深列表处于同一深度的最短列表的长度”。

请您参考如下方法:

v1,任意深度的最小长度:

>>> b = [[1,0,1,2,1,1,1,3111111,[1,1,6,7]],[31,1,4,51,1,1,1],[1,1,6,7,8]] 
>>> def lists_in(L): 
...     for element in L: 
...         if isinstance(element, list): 
...             yield element 
...             yield from lists_in(element) 
...              
>>> min(lists_in(b), key=len) 
[1, 1, 6, 7] 
>>> len(min(lists_in(b), key=len)) 
4 

v2,新要求“与最深列表处于同一深度的最短列表的长度”:

>>> def depths_and_lengths(L, depth=0): 
...     for element in L: 
...         if isinstance(element, list): 
...             yield (depth, len(element)) 
...             yield from depths_and_lengths(element, depth-1) 
...              
...              
>>> min(depths_and_lengths(b))[1] 
4 
>>> min(depths_and_lengths([[[1, 2]]]))[1]    # Stefan Pochmann example 
2