gpt4 book ai didi

python - 将 list.map 应用于 python 中的两个并行列表

转载 作者:行者123 更新时间:2023-11-28 22:41:53 26 4
gpt4 key购买 nike

我有两个平行的嵌套列表列表。它们的长度和子长度总是匹配的。例如:

_list1 = [[1,2,3],[1,2],[1,2,3,4]]
_list2 = [[a,b,c],[a,b],[a,b,c,d]]

现在不保证上面的结构。我可能会得到一个平面列表或更深的嵌套列表。为此,如果我想对该列表中的每个元素应用一个定义,我正在使用 list.map 和递归,如下所示:

def ProcessList(_func, _list):
return map( lambda x: ProcessList(_func, x) if type(x)==list else _func(x), _list )

这样我就可以将单个定义应用于未指定的嵌套列表。我怎样才能做同样的事情,但同时有两个列表?我想应用一个定义,该定义将从 _list1 中获取一个元素,对于 _list2 中的匹配元素,它将执行一个定义。例如:

def DoSomething(i,j);
return str(i) + str(j)

因此,如果我将此定义并行应用于两个列表,它将返回:

_newList = [[1a,2b,3c],[1a,2b],[1a,2b,3c,4d]]

同样,重点是能够对未指定列表和嵌套列表进行操作。

最佳答案

你的意思是这样的:

>>> def ProcessList(_func, *lists):
... return map( lambda *xs: ProcessList(_func, *xs) if all(type(x) is list for x in xs) else _func(*xs), *lists )
...
>>> def DoSomething(*args):
... return ''.join(map(str, args))
...
>>> _list1 = [[1,2,3],[1,2],[1,2,3,4]]
>>> _list2 = [['a','b','c'],['a','b'],['a','b','c','d']]
>>>
>>> print (ProcessList(DoSomething, _list1, _list2))
[['1a', '2b', '3c'], ['1a', '2b'], ['1a', '2b', '3c', '4d']]

关于python - 将 list.map 应用于 python 中的两个并行列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32230904/

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