gpt4 book ai didi

python - 在 python 生成器/列表中查找最大/最小对象

转载 作者:太空狗 更新时间:2023-10-30 02:29:18 24 4
gpt4 key购买 nike

假设我有一个生成器 gen 可以生成一些列表。我想找到最长的列表。

我可以

max((len(L) for L in gen))

这将使我得到最长列表的长度,但此时该列表已成为时间的迷雾。

或者我可以做

maxlength = 0
for L in gen:
if len(L)>maxlength:
savelist = L
maxlength = len(L)

但似乎应该有一种更 pythonic 的方式来避免 for 循环和 if 语句。

编辑只是一条评论,以帮助其他可能搜索相关问题的人:用 min 找到最小的对象可以等效地完成,如果 gen 是一个列表,同样的方法也适用。

最佳答案

max 有一个仅限关键字的参数 key 它将接受一个函数来判断哪个是最大的。

result = max(gen, key=len)

这相当于:

result = [el for _, el in sorted([len(el), el for el in gen])][-1]
# note that `sorted` takes a `key` argument too!
# # result = sorted(gen, key=len)[-1]

但显然更容易阅读

关于python - 在 python 生成器/列表中查找最大/最小对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33101465/

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