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