【问题标题】:Trying to use a Nested For Loops w/ 2 variables, Keeping 1 the same while running through the first for loop尝试使用带有 2 个变量的嵌套 For 循环,在运行第一个 for 循环时保持 1 相同
【发布时间】:2013-08-05 22:48:54
【问题描述】:

样本数据 (towers1.txt):

MS33 42.19 -70.33 3.6
JS89 42.23 -70.30 3.9
ED22 42.25 -70.33 3.4
HE90 42.27 -70.35 3.7
TW05 42.30 -70.30 3.4
WW23 42.37 -70.28 3.7

代码:

lr = []

import lat_long_to_dist
f = open('towers1.txt','r')   
towers = [line.strip('\n') for line in f]
for line in towers:
     lr.append(line.split())

我正在尝试弄清楚如何仅使用 2 for 循环(我还没有学过字典及以上)来为 Towers 本身设置第一个 for 循环,然后为 Towers 设置第二个 for 循环除了在第一个循环中选择的塔之外的所有塔。虽然仅使用文件lat.py 中的以下公式,但我有(无法编辑)即。我的代码中的一行必须阅读

lat.distance_from_lat_long( lat1, long1, lat2, long2 )

因此,我需要从第一个 for 循环中获取 lat1 和 long1,它们将保持不变,直到它们在第二个 for 循环中读取每个其他塔的 lat2 和 long2,然后第二个塔进入第一个 for 循环,依此类推,这会给我两座塔之间的距离。

如果从嵌套的 for 循环中,lr[3] 的最小值小于 2 个塔的距离,则塔可以工作 (count=+1),然后在第一个 for 中返回塔的名称循环以及它可以与哪些其他塔一起使用,第二个相同,哪个可以等等。只是有点困惑;想知道是否有人可以提供帮助?

我不确定这是否有帮助,但我已经尝试了好几个小时,但还是什么都想不出来。这是我现在的代码,太糟糕了,也许有人可以帮忙?

def Tower_Dist_From_Eachother(t,count):  
    for i in range(count):
        for j in range(count):
            lats = 0
            longs = 0              
            tdist = lat.distance_from_lat_long(lats, longs, float(lr[j][1]), float(lr[j][2]))

def towers(l):
    towname = []
    for i in range(count):
        towname.append(at[i][0])

for i in range(count):
    lats += float(lr[i][1])
    longs += float(lr[i][2])

【问题讨论】:

  • 对于您的新代码,“太糟糕了”是什么意思?您希望它做什么,它会做什么?
  • 在说明中我写了一段关于我想要代码做什么的段落。
  • 你对你想要做什么的解释比泥巴清楚一点,但不是很多。您需要修改问题以更清楚地解释您所追求的。我的答案计算了您列表中每对塔之间的距离,这似乎是您所追求的。但是你已经规定计算每对塔之间的距离不是你想要的(因为你要求我删除我的答案),所以你必须非常努力地重申你想要的。
  • 用我的 towers1.txt 列表,说它 =f,我需要取第一个塔的 f[0][1] 和 f[0][2] 并使用 (lat1 ,long1,lat2,long2) 和下面的列表 f[x][1], f[x][2] 然后取 f[1][1] f[1][2],其余的列表等
  • 我发布了另一个简化的问题@jonathanleffler

标签: python loops for-loop while-loop enumerate


【解决方案1】:

我假设这部分是真正的问题:

所以我试图弄清楚如何仅使用 2 个 for 循环(我还没有学过字典及以上),以便为 Towers 本身设置第一个 for 循环,然后为所有塔楼使用第二个 for 循环,除了在第一个循环。

所以你想遍历除i 之外的所有塔,对吗?最简单的方法是遍历所有的塔,然后跳过i。例如:

for i in towers:
    for j in towers:
        if j == i:
            continue
        # do stuff with i and j

或者,等效地:

for i in towers:
    for j in towers:
        if j != i:
            # do stuff with i and j

【讨论】:

  • 我想对不在第一个循环中的所有塔的 lr[1] 和 lr[2] 值进行第二次循环,这些值将进入 lat1 lat2 long1 long2
  • 你的评论里我是什么??
  • @user2605035:我在任何地方都没有评论,而且我没有看到除你之外的任何人的任何 cmets,所以……你指的是什么?在我的代码中,i 依次是每个塔。然后,对于每个ij 又是每个塔,但我跳过了ji 是同一塔的情况。我想这就是你所要求的。但这实际上只是一个猜测,因为您的问题非常令人困惑。
  • 发布了另一个版本的问题
猜你喜欢
  • 2013-08-04
  • 2022-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多