如何更新循环的倍数里面的名单?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何更新循环的倍数里面的名单?相关的知识,希望对你有一定的参考价值。

我想打一个网格状结构,并愿意检查,在小区地理位置上看谎言与否?

我具有坐标的元组,如下所示的元组,我有其它坐标其中还包含一些坐标,不同数量的在每个子列表坐标的列表的列表。我想在支票上的子表的每个坐标与地理坐标内的元组中的坐标。其结果是,我想要(基于给定的条件),用于与值1或0的坐标的每个子表的Tuple的大小的列表。 DATA1写入1否则为0的,如果一个子列表的坐标范围内的坐标的坐标谎言。

如果我挑选从坐标的子列表的地理点(6.8,51.35),我将检查它的Tuple的每个地理坐标,像=(X,Y)其修改为(Z = X + 0.49,p值= Y + 0.49) ,0.49因为单元间隙为0.05,则值(6.8,51.35)与一系列的(A,b)及(Z,p),取代有1否则为0的值(X,Y)进行比较。

Tuple = ((6.8, 51.35), (6.85, 51.4), (6.9, 51.45), (6.95, 51.5), (7.0, 51.55), (7.05, 51.6), (7.1, 51.65), (7.15, 51.7), (7.2, 51.75), (7.25, 51.8), (7.3, 51.85), (7.35, 51.9), (7.4, 51.95), (7.45, 52.0), (7.5, 52.05), (7.55, 52.1), (7.6, 52.15), (7.65, 52.2), (7.7, 52.25), (7.75, 52.3), (7.8, 52.35), (7.85, 52.4), (7.9, 52.45), (7.95, 52.5), (8.0, 52.55), (8.05, 52.6), (8.1, 52.65), (8.15, 52.7), (8.2, 52.75), (8.25, 52.8), (8.3, 52.85), (8.35, 52.9), (8.4, 52.95), (8.45, 53.0), (8.5, 53.05), (8.55, 53.1), (8.6, 53.15), (8.65, 53.2), (8.7, 53.25), (8.75, 53.3), (8.8, 53.35), (8.85, 53.4), (8.9, 53.45), (8.95, 53.5), (9.0, 53.55), (9.05, 53.6), (9.1, 53.65), (9.15, 53.7), (9.2, 53.75), (9.25, 53.8), (9.3, 53.85), (9.35, 53.9), (9.4, 53.95), (9.45, 54.0), (9.5, 54.05), (9.55, 54.1), (9.6, 54.15), (9.65, 54.2), (9.7, 54.25), (9.75, 54.3), (9.8, 54.35), (9.85, 54.4), (9.9, 54.45))

coordinate = [[('9.72', '52.33071'), ('9.72005', '52.3306')],[('9.7909166', '52.353843'), ('9.7907', '52.35399'), ('9.7904', '52.35417'), ('9.7897', '52.35454'), ('9.7891696', '52.354815')]]

我写的代码是

for i in range(0,2):
    list=[]
    point=cordinate[i]
    y=len(cordinate[i])
    print(y)
    for j in range(0,y):
       l=float(point[j][0])
       m=float(point[j][1])
       #list=[]
       for k in range(0,len(Tuple)):
           x=Tuple[k][0]
           y=Tuple[k][1]
           gap = 0.049
           if (x < l < x + gap) and (y < m < y + gap):
               value = 1
           else:
               value = 0
           list.append(value)
   print(list)

电流输出:

2
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

5
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

预计输出应该列出大小63,其中包含0或1:

[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
答案

你有三个问题。前两个是相关的:Vic指出,你的“其他”条款执行内部if是否是True。为了简化检查,升级您的间隙检查代码

gap = 0.049
if (x < l < x + gap) and 
   (y < m < y + gap):
    value = 1
else:
    value = 0

list.append(value)

这也修复你的第二个问题:在“发现”的情况下,你会追加value两次:一次是在if内,并经过一次。

另请注意,您可以在支票减少到一个长项:

list.append(int((x < l < x + gap) and (y < m < y + gap)))

最后,你有问题,问题在你的数据不会被设计产生任何1值。您已经定义了一个对角线一系列单元。第一拥有的(6.8,51.35)和(6.849,51.399)对角线上的角;接下来在第二角落拾取并沿对角线网格的继续。

coordinate的点不属于其中任何细胞。例如,第一点是

(9.72, 52.33071)

与含Tuple坐标网格(x)点

(9.7, 54.25), (9.75, 54.3)

但所需要的y坐标是高于该点近两个单元(40步)。因此,存在对点没有匹配的小区。其他的坐标点有同样的问题。你根本就没有适合的标准的任何数据点,所以你的输出列表将是所有零。

看来,无论是您的数据或问题的描述是错误的。

另一答案

高塔姆我同意上述关于MCVE提交意见。你可能想看看根据您发布的代码的一个地方是你的4参数if语句:

    if l>x and l<z:
      if m>y and m<p:
        value=1
    else : value = 0

你可能会得到这个代码不需要输出的,因为你的else语句执行每次迭代。

以上是关于如何更新循环的倍数里面的名单?的主要内容,如果未能解决你的问题,请参考以下文章

为啥ip片段必须是8字节的倍数

js如何实现输出1到10中,3的倍数的数,在线等,求语言描述加代码,谢谢

如何使用事件侦听器来加载动画片段的循环

如何在if循环中使用模运算符检查2的正倍数

c_cpp 这个简单的代码片段显示了如何使用有符号整数在C中完成插值。 for()循环确定要插入的范围

从prop更新更新状态将导致循环错误