作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用列表理解获取一个列表。 lat 说我使用下面的这行代码获取此列表:
quality, angle, distance = measurements[i]
new_data = [each_value for each_value in measurements[i:i + 20] if angle <= each_value[1] <= angle + 30 and
distance - 150 <= each_value[2] <= distance + 150]
其中测量是一个包含(质量、角度、距离)对的大数据集。由此,我得到了这些值(value)。
desired_list= [(1,2,3)(1,5,3),(1,8,3)(1,10,3),(1,16,3),(1, 17,3)]]
现在如何在列表理解中添加新条件,以便仅在角度在某个偏移值范围内时才能获取值?假设两个角度之差小于或等于 5,则将它们放入desired_list 中。
在这种情况下,我的列表应该如下所示:
desired_list= [(1,2,3)(1,5,3),(1,8,3)(1,10,3)]
导致从 2 到 5、5 到 8、8 到 10 的距离小于或等于 5。
但是最后两点不包括在内,因为它们打破了 (1,10,3) 之后的条件,并且不需要检查。
我怎样才能实现这个目标?请帮助我
Note: it doesn't need to be in the same list comprehension.
最佳答案
你提到数据集很大。取决于您希望避免从头开始创建新列表并仅搜索相关索引的大小。
data = [(1,2,3), (1,5,3), (1,8,3), (1,10,3), (1,16,3), (1,17,3)]
MAXIMUM_ANGLE = 5
def angles_within_range(x, y):
return abs(x[1] - y[1]) <= MAXIMUM_ANGLE
def first_angle_break_index():
for i in range(len(data) - 1):
if not angles_within_range(data[i], data[i+1]):
return i+1
def valid_angles_list():
return data[:first_angle_break_index()]
print(valid_angles_list())
关于python - 如何在Python中对列表中的近点进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55646039/
我是一名优秀的程序员,十分优秀!