【发布时间】:2021-08-21 16:43:44
【问题描述】:
我正在尝试使用 lambda 函数删除元组中的浮点数。 我正在切片元组并将元组中的最后一个元素转换为 int 并将其连接起来。
xyz = list((filter(lambda x : x[2].is_integer(), sides_triplet )))
print(xyz)
xy = list(map(lambda tup : tup[:2] + (int(tup[2]),), xyz))
print(xy)
输出:
[(3, 4, 5.0), (6, 8, 10.0)]
[(3, 4, 5), (6, 8, 10)]
代码运行良好,但我的问题是:
xy = list(map(lambda tup : tup[:2] + (int(tup[2]),), xyz))
需要解释为什么我们使用逗号,然后在 int 之后关闭大括号。 相反,如果我使用下面的行,它会抛出一个错误,这是为什么呢?
xy = list(map(lambda tup : tup[:2] + (int(tup[2])), xyz))
输出:
xy = list(map(lambda tup : tup[:2] + (int(tup[2])), xyz))
TypeError: can only concatenate tuple (not "int") to tuple
【问题讨论】:
-
共享输入和预期输出
-
您的括号需要匹配。 “EOF 错误”是因为解释器正在寻找最后一个结束括号来完成语句,并且它在找到文件之前就到达了文件的末尾 (EOF)。添加缺少的括号将其修复。
-
@balderman 我编辑了我的帖子,其中显示了输入 xyz = [(3, 4, 5.0), (6, 8, 10.0)]。我正在尝试通过切片和连接来删除浮动
-
这看起来与stackoverflow.com/questions/68815174/… 完全相同,其中实际问题是“什么是元组”:\
-
只是为了解释区别,
(int(tup[2])只是返回一个 int 而不是一个元组。您需要添加尾随逗号来告诉 python 这是一个具有单个值的元组。(int(tup[2],)
标签: python python-3.x