Python 更改未知初始形状列表的所有值

Python 更改未知初始形状列表的所有值,python,list,Python,List,我想要的是用未知的初始形状更改列表中的所有元素,所以我创建了这个helper函数,但是 有没有更好(更短)的方法,或者内置的方法 另外还有一个问题,如果没有内置函数,那么最好在哪里存储这样的函数>而不是在每个文件或项目中复制粘贴它 期望输出: [2] [[2, 3], 4] [[2, 3, [4]], [5, 6], 7] 编辑: @Colin Schoen不是您的标记问题的副本,因为迭代两次只会给我一个错误 我想我发布的解决方案,或者@blhsing的版本确实更短,是解决这个问题

我想要的是用未知的初始形状更改列表中的所有元素,所以我创建了这个helper函数,但是 有没有更好(更短)的方法,或者内置的方法

另外还有一个问题,如果没有内置函数,那么最好在哪里存储这样的函数>而不是在每个文件或项目中复制粘贴它

期望输出:

 [2] 
 [[2, 3], 4] 
 [[2, 3, [4]], [5, 6], 7]
编辑: @Colin Schoen不是您的标记问题的副本,因为迭代两次只会给我一个错误


我想我发布的解决方案,或者@blhsing的版本确实更短,是解决这个问题的唯一方法,但如果我坚持下去,在不同的项目中使用该函数而不复制它的方法是什么?

您可以让
change
返回一个生成器表达式,这样它就可以使用递归调用的返回值:

def change(next_list, function):
    return (list(change(e, function)) if isinstance(e, list) else function(e) for e in next_list)
以便:

for changed_list in change(getNextList(), lambda x: x+1):
    print(changed_list)
产出:

[2]
[[2, 3], 4]
[[2, 3, [4]], [5, 6], 7]

至于问题的第二部分,您可以将此函数存储在一个单独的模块中,例如
utils.py
,该模块位于属于
PYTHONPATH
环境变量的目录中,因此,您的任何项目都可以从utils import change执行
,以使此函数在名称空间中可用。

没有内置方式。你的方式怎么了?为什么一定要短一点?可能是
[2]
[[2, 3], 4]
[[2, 3, [4]], [5, 6], 7]