gpt4 book ai didi

python - 寻找嵌套列表中的最低值?

转载 作者:行者123 更新时间:2023-12-01 04:56:19 25 4
gpt4 key购买 nike

我正在尝试编写一个函数,它接受一个列表并可以打印该列表中的最小整数。现在我试图弄清楚在嵌套列表中该怎么做,如果最低数字位于这些嵌套列表之一中,那么总的来说它将打印该数字。我的代码在这里:

def listMin():
list2 = [3,4,[2,99,8],7]

for i in range (len(list2)):
if type(list2[i]) == type([]):



y=min(i)
list2.append(y)
print "hello"
if len(list2)== 0:
return None
else:


x= min(list2)
print x


listMin()

虽然这看起来应该打印数字 2,但它没有,并且一旦到达嵌套列表就会给我一个错误:

TypeError: 'int' object is not iterable

我尝试了多种方法,但我很难理解为什么这种方法不起作用。

最佳答案

嵌套一深

在您的示例中,列表仅嵌套一层。如果这是一般情况,请尝试:

>>> list2 = [3,4,[2,99,8],7]
>>> min(x if isinstance(x, int) else min(x) for x in list2)
2

任意深度嵌套

如果允许更深层次的嵌套,请定义此递归函数:

>>> def rmin(lst): return min(x if isinstance(x, int) else rmin(x) for x in lst)
...

运行中:

>>> rmin(list2)
2

或者,嵌套更深:

>>> list3 = [3,4,[[2,99],8],7]
>>> rmin(list3)
2
>>> list4 = [3, 4, [[2, [99, 1]], 8], 7]
>>> rmin(list4)
1

它是如何工作的

函数rmin由一行组成:

return min(x if isinstance(x, int) else rmin(x) for x in lst)

如您所见,这是一个列表推导式,它查看列表 lst 的每个值 x

让我们将 min 的参数分为两部分。第一个是:

x if isinstance(x, int) else rmin(x)

如果x是一个整数,则返回x。否则,它会在 x 上调用 rmin。在后一种情况下,rmin 递归地查看x中的每个值并返回最小值。

min 参数的第二部分是:

for x in lst

这只是列表理解的常见情况。它依次提取 lst 中的每个值并将其分配给 x

关于python - 寻找嵌套列表中的最低值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27262370/

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