我有一个列表,其中包含每个N坐标的M元组(N维)。 每个坐标都是一个表达式,我想只取实数点(所有坐标都是实数)。
我写了以下代码:
points = filter(lambda p: reduce(
lambda c1, c2: c1.is_real and c2.is_real, p), points)
它不起作用(NameError: name 'reduce' is not defined
)。我显然不完全理解这些类型的表达式是如何工作的,但我想要的东西相当于:
remove_points = []
for point in points:
for coordinate in point:
if not coordinate.is_real:
remove_points.append(point)
break
for point in remove_points:
points.remove(point)
对我有用。任何人都可以指出我出错的地方以及应该如何解决?
答案 0 :(得分:1)
您使用的是哪个Python版本? reduce
已移除list
。
不要将remove_points
用于set
,而是使用result = [point for point in points if all(coordinate.is_real for coordinate in point)]
,它会更快。
第二种方法有什么问题?但也许你也想考虑以下几点:
r0