Python 3.x Python-创建递归函数

Python 3.x Python-创建递归函数,python-3.x,Python 3.x,我的问题基本上是这样的:创建一个递归函数,将嵌套列表作为 参数,并返回其最大元素和最小元素之间差异最小的子列表 例如:函数应该为输入[1199,59]、[1,2]、[3,8]返回[1,2] 我搜索了Google和stackoverflow,但找不到这个具体的例子 我想得到的帮助是迭代。我想使用递归迭代每个子列表(可以是尽可能多的子列表)。我已经通过for循环实现了这一点,但我无法掌握使用递归方法进行迭代的思想 到目前为止,我有: def sublist(mylist): if len(m

我的问题基本上是这样的:创建一个递归函数,将嵌套列表作为 参数,并返回其最大元素和最小元素之间差异最小的子列表

例如:函数应该为输入[1199,59]、[1,2]、[3,8]返回[1,2]

我搜索了Google和stackoverflow,但找不到这个具体的例子

我想得到的帮助是迭代。我想使用递归迭代每个子列表(可以是尽可能多的子列表)。我已经通过for循环实现了这一点,但我无法掌握使用递归方法进行迭代的思想

到目前为止,我有:

def sublist(mylist):
    if len(mylist) == 0:
        return []
    elif len(mylist) == 1:
        return mylist
    else:
        a = (mylist[0][0]) - (mylist[0][-1])
        if a < sublist(mylist[1:]):
            return mylist[0]
sublist([[1,199,58],[1,2],[3,8]])
def子列表(mylist):
如果len(mylist)==0:
返回[]
elif len(mylist)=1:
返回mylist
其他:
a=(mylist[0][0])-(mylist[0][1])
如果<子列表(mylist[1:]):
返回mylist[0]
子列表([[1199,58],[1,2],[3,8])
我知道这部分(子列表(mylist[1:])显然是错的。我试图将值a与mylist[1:]中的值进行比较。在此我将不胜感激

更新:

def differences(mylist):

    diff = max(mylist) - min(mylist)

    return diff


def sublist(nestedlist):

    if len(nestedlist) == 1:

        return nestedlist[0]

    else:

        if differences(nestedlist[0]) < differences(sublist(nestedlist[1:])):

            return nestedlist[0]

        else:

            return sublist(nestedlist[1:])


print(sublist([[1,199,59],[1,2],[3,8]]))
def差异(mylist):
差异=最大值(mylist)-最小值(mylist)
回差
def子列表(嵌套列表):
如果len(嵌套列表)==1:
返回嵌套列表[0]
其他:
如果差异(嵌套列表[0])<差异(子列表(嵌套列表[1:]):
返回嵌套列表[0]
其他:
返回子列表(嵌套列表[1:])
打印(子列表([[1199,59],[1,2],[3,8]]))

我假设您希望对列表的第一级使用递归。因此,在不提供100%代码的情况下,您必须执行以下操作:

1) 创建一个方法,例如
差异(列表)
,该方法计算列表的差异,并返回一个带有参数列表和最小差异的列表,即
差异([1,2])
应返回
[1,[1,2]]
。在第一个子列表上调用一次,即
min=differences(mylist[0])

2) 创建子列表方法,如下所示:

def sublist(initial_list):

   # 1) call differences() method for the first sublist of the 'initial_list'
   # 2) update 'min'  with differences(initial_list[0])if differences(inilitial_list[0])[0] < min[0]; 
   # 3) call sublist() again now removing the sublist you checked before from the arguement
   # 4) (the following should be at the start of your sublist() method) 

   if len(initial_list) = 1:
       if differences(initial_list) < min: 
            return initial_list
       else: return min[1]
def子列表(初始列表):
#1)为“初始列表”的第一个子列表调用differences()方法
#2)如果差异(初始列表[0])[0]<最小值[0],则使用差异(初始列表[0])更新“最小值”;
#3)再次调用sublist(),现在从参数中删除之前检查过的子列表
#4)(以下内容应位于sublist()方法的开头)
如果len(初始列表)=1:
如果差异(初始列表)

希望对你有所帮助

“我搜索了Google和stackoverflow,但找不到这个具体的例子。”
等等。。。所以你可能需要编写代码,而不是把互联网上的例子拼接在一起?!人们会这么做吗?如果你可以迭代地做,为什么你想递归地做呢?也许再详细一点?或者显示一些代码?@JonathonReinhart是的,我必须编写一个代码,这就是我目前为止所拥有的:def sublist(mylist):if len(mylist)==0:return[]elif len(mylist)==1:return mylist else:a=(mylist[0][0])-(mylist[0][1]),如果a