gpt4 book ai didi

python - 如何让 Maps 和 lambdas 在 python 3.4 中使用矩阵?

转载 作者:太空宇宙 更新时间:2023-11-04 10:24:13 25 4
gpt4 key购买 nike

我经常避免写这样的帖子,但我是 python 3.4 的新手,我需要有关此代码的帮助。

假设我们有以下列表:

v = [ [ x, y ] for x in ['a','b','c'] for y in range(1,5) ]

它产生一个列表列表:[ ['a', '1'], ['a','2'], ... ]

现在我想加入那些字符串。我尝试了以下方法:

p = map(lambda (x, y): ''.join(x,y), v)

没用。

错误:

TypeError: join() takes exactly one argument (2 given)

我已经尝试查阅文档,但还是无法解决我的问题。

有人知道吗?

最佳答案

你可以这样做:

>>> list(map(lambda x: ''.join(map(str, x)), v))
['a1', 'a2', 'a3', 'a4', 'b1', 'b2', 'b3', 'b4', 'c1', 'c2', 'c3', 'c4']

这将为 v 中的每个元素执行函数 lambda x: ''.join(map(str, x))v 中的元素是一个列表,其中包含一个字符串和一个整数作为值。这意味着 lambda 函数接收到的 x 是包含这两个值的列表。

然后我们需要确保该列表中的所有值都是字符串,然后再将它们传递给 join()。这意味着我们将调用 map(str, x) 将子列表 x 中的所有值转换为字符串 (['a', 1] 变为 ['a', '1'])。然后我们可以通过将结果传递给 ''.join(...) 来加入它们(['a', '1'] 变为 [ 'a1']).这是为 v 中的每个列表完成的,所以这给了我们想要的结果。

map 的结果是 Python 3.x 中所谓的 mapobject 因此我们将所有内容包装在 list() 调用中最终得到一个列表。

此外,列表推导式在这里可以说更具可读性:

>>> [x[0] + str(x[1]) for x in v]
['a1', 'a2', 'a3', 'a4', 'b1', 'b2', 'b3', 'b4', 'c1', 'c2', 'c3', 'c4']

关于python - 如何让 Maps 和 lambdas 在 python 3.4 中使用矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30413099/

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