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

标签 python dictionary lambda

我经常避免写这样的帖子,但我是 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/

相关文章:

C# 7 元组和 lambda

python - 使用 Django 编写文件上传 API

python - Flask:无法解码使用请求提交的传入 JSON

python - 需要检查容器是否在运行

python - 如何简洁地创建一个以字母为键的字典?

c# - 查找两个字符串列表之间的差异

c# - 是否可以将对象或值从 Python 脚本返回到托管应用程序?

python - 如何使用 openCv python 将图像文件对象转换为 numpy 数组?

python - quantize() 和 str.format() 有什么区别?

ruby-on-rails - Rails 验证 :if => Proc. 新的还是 lambda?