gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 07:30:24 25 4
gpt4 key购买 nike

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

如何为这个列表返回 4b=[[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

关于python - 我可以快速获得 python 列表中最内部子列表的最小长度吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48955868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com