我有一个包含二维列表的列表,因此例如记录[a] [b]将是其中的一个值。有一些标准应该过滤它。我使用"和#34;的组合。和"如果"这样做并且有效。然后必须添加一些额外的标准来过滤掉具有坐标值的点,这些点在当前迭代点周围的范围为10 * 10个单位。但是我的代码编译但没有做任何事情,我无法弄清楚为什么(因为我还是Python的新手)。
for rec in range(1,len(records)-1):
for koor in range(1,len(records)-1):
if records[rec][4]+10 >= records[koor][4] >= records[rec][4]-10 and\
records[rec][5]+10 >= records[koor][5] >= records[rec][5]-10 and\
-1.00036 <= records[rec][8] / records[koor][8] <= 1.00036:
我认为它会做的是在定义的区域(第3行和第4行)中查找点,并且只允许它们在第5行的条件下通过。但它让一切都通过了。为什么这不起作用?
编辑:记录[a]形式的一个条目如下所示: [&#39; 30.12.1899 08:47:00&#39;,&#39; 7.2.2003 00:00:00&#39;,48.82,11.2,4441489.89,5410519.48,4,1.2,508.55,0.0,0.0 ,2]。
答案 0 :(得分:0)
试试这个:
for rec in records[1:-1]:
for koor in records[1:-1]:
if rec == koor:
# handle this some other way
elif all(20 >= koor[x] - rec[x] + 10 >= 0 for x in [4, 5]) and abs(rec[8] / koor[8]) <= 1.00036: