【发布时间】:2022-11-10 01:36:04
【问题描述】:
假设我得到了类似((1, 2), (2, 3), (2, 3)) 的东西。如您所见,2 在元组中的所有元组中重复。我想要一些东西返回(2)。
我正在处理的真实数据集是:
(
(2, 3, 5, 7, 9),
(2, 3, 4, 5, 7, 8, 10),
(2, 3, 4, 5, 6, 7, 9, 10),
(2, 3, 4, 5, 6, 7, 8, 9),
(2, 3, 4, 5, 6, 7, 8, 9, 10),
(2, 3, 4, 5, 6, 7, 8, 9, 10),
(2, 3, 4, 5, 6, 7, 8, 9, 10),
(2, 3, 4, 5, 6, 7, 8, 9, 10),
(2, 3, 4, 5, 6, 7, 8, 9, 10)
)
我将它排除在返回(2, 3, 5, 7) 之外。
我已经尝试过以下方法,但由于某种原因它返回一个空元组。
a = ((1, 2), (2, 3), (2, 3))
print(tuple(filter(lambda x: all(x in i for i in a), a)))
对我来说,有三件事很重要。
- 不使用可变数据和语句
- 尽可能少
for,而不是map或filter - 应该全部放在一行中,所以我可以将其转换为 lambda 函数左右...
所以基本上,我想在功能上做到这一点。
【问题讨论】:
-
“它应该全部放在一行中,所以我可以将它转换为 lambda 函数左右......” 为什么这很重要?为什么必须你使用 lambda 表达式来定义你的函数?您可以只使用常规功能定义语句。使用 lambda 表达式并不能使其更具功能性