Python 嵌套列表中的最小值
我想写一个程序,在嵌套列表中找到最小值,以相同的列表格式返回值 输入Python 嵌套列表中的最小值,python,list,Python,List,我想写一个程序,在嵌套列表中找到最小值,以相同的列表格式返回值 输入 ip = [[[5,4,7],[4,2,1],[1,9,5,4]],[[3,5],[6,5,2]],[2,5,3,7]] 输出 op =[[[4], [[1]] , [[1]] ],[[3],[2]],[2]] 我编写了一个函数,可以从提供的列表中识别最小值 def smallest_num_in_list( list ): min = list[ 0 ] for a in list: i
ip = [[[5,4,7],[4,2,1],[1,9,5,4]],[[3,5],[6,5,2]],[2,5,3,7]]
输出
op =[[[4], [[1]] , [[1]] ],[[3],[2]],[2]]
我编写了一个函数,可以从提供的列表中识别最小值
def smallest_num_in_list( list ):
min = list[ 0 ]
for a in list:
if a < min:
min = a
return min
def列表中的最小值(列表):
最小值=列表[0]
对于列表中的项目:
如果a
这适用于普通列表
现在我正试图为我丢失的嵌套列表编写一些逻辑
我正试图创造这样的东西
请给我一些启示:-)
谢谢你我想是这样的:
def inspectList(originalList) :
ResultList=[]
for listItem in originalList:
if isinstance(listItem, list) :
MinVal=inspectList(listItem)
ResultList.append(MinVal)
else:
return min(listItem)
return ResultList
ip = [[[5,4,7],[4,2,1],[1,9,5,4]],[[3,5],[6,5,2]],[2,5,3,7]]
result =inspectList(ip)
print(result)
因为您不知道每次要达到多少级别,递归可能是一种自然选择 从这里我们需要阶跃和停止条件。我想在这一点上它们是非常明显的:步骤是每次向下一个列表级别,而停止条件是当我们到达一个“叶子”列表时——一个没有更多嵌套列表的列表 为了检测此类列表,我们可以使用错误处理:
def最小化(l):
尝试:
返回[l中元素的最小化(元素)]
除类型错误外:
返回[min(l)]
此函数迭代其list参数的元素,并尝试向结果添加递归调用。当我们对叶列表进行递归调用时,该调用将失败,因为元素不可iterable。这将使我们上升一级到叶列表,并且返回最小值
这意味着此函数可用于任意数量的嵌套,甚至是平面列表:
>>最小化([[5,4,7],[4,2,1],[1,9,5,4],[3,5],[6,5,2],[2,5,3,7])
[[[4], [1], [1]], [[3], [2]], [2]]
>>>最小化([5,4,3,2,1])
[1]
也许这就是你想要的:
def fun(在列表中):
如果设置([在列表中为x键入(x)]=={list}:
return[列表中x的乐趣(x)]
其他:
返回[最小值(在列表中)]
ip=[[5,4,7],[4,2,1],[1,9,5,4],[3,5],[6,5,2],[2,5,3,7]]
印刷(趣味(ip))
[[[4], [1], [1]], [[3], [2]], [2]]
如果您的新问题更深一层,可能另一个for
循环将对您有所帮助。如果我理解正确,您希望在嵌套列表(嵌套)中创建另一个函数def minimminate_num_:
在每个嵌套列表中获得最小的数字。如果这是正确的,那么可以通过递归来实现。换句话说,函数可以自己调用。这很好,但将条件替换为:all(对于In_list中的x,isinstance(x,list)
可能会稍微有效一些。(由于短路)。