【发布时间】:2021-06-28 19:26:38
【问题描述】:
在 python 中,我有一个如下形式的三元组列表:
[(220, 1.0, 1), (385, 1.0, 2), (405, 1.0, 2), (1276, 1.0, 6), (1649, 1.0, 8), (1941, 1.0, 10), (2554, 1.0, 13), (3123, 1.0, 16), (2377, 0.8879465659, 12), (500, 0.8854919047, 2), (2435, 0.8815715038, 12), (2151, 0.8787807797, 11), (1888, 0.87827976, 9), (2185, 0.8780501222, 11), (2215, 0.8747450062, 11), (358, 0.8724861947, 2), (3636, 0.8716343914, 19), (734, 0.8714647102, 3), (1742, 0.8707242976, 9), ......]
我想将列表的元素按照列表的每个三元组的第二个值,分成十个轨道进行分割统计:
=0 和
=0.1 和
=0.2 和
=0.3 和
= 0.4 和
.....
=0.8 和
=0.9 和
我尝试使用:
tracks = np.linspace(0,1,11) # array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ])
for i in range (len(tracks)-1):
print( tracks[i], "a", tracks[i+1], ":", sum([1 for (x,y,z) in sm_list if y >= tracks[i]] and y < intervalos[i+1]))
但它返回以下错误:“ NameError: name 'y' is not defined”
如何定义复合布尔子句以形成上述列表?
制作:
tracks = np.linspace(0,1,11) # array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ])
for i in range (len(tracks)-1):
print( tracks[i], "a", tracks[i+1], ":", sum([1 for (x,y,z) in sm_list if y >= tracks[i]] ))
不返回错误,但返回重叠的轨道,这不是我需要的。
【问题讨论】:
-
你期望的输出是什么?
标签: python list accounting