“浮动”对象不可订阅

时间:2015-06-03 20:15:18

标签: python typeerror

我看了一遍,但没找到答案。

我要做的是创建一个从71.42 W到70.87 W的每个经度的列表,以及每纬度/经度的1/100,每个纬度从42.19 N到42.54 N.

  

所以,有点像:

(42.19, -71.42)

(42.19, -71.43)

(42.19, -71.44)
     

...

(42.20, -71.42)

(42.20, -71.43)
     

等,

到目前为止,我的代码看起来像这样:

latlong = [(42.19, -71.42)]

while latlong[-1][0] < 42.54:
    latlong.append(latlong[-1][0] + 1)

print(latlong)

问题在于,当我尝试这段代码时,(目前只能做经度),我得到TypeError: 'Float' object is not subscriptable.

非常感谢任何帮助。

谢谢!

编辑:回答!谢谢,CoryCramer

4 个答案:

答案 0 :(得分:0)

如果我明白你要拍的是什么,你想要一个有纬度和经度的网格?然后你可以做类似

的事情
import itertools
longs = [-i / 100.0 for i in range(7087, 7142)]
lats = [i / 100.0 for i in range(4219, 4254)]
latlong = list(itertools.product(lats, longs))

输出

[(42.19, -70.87), (42.19, -70.88), (42.19, -70.89), ...
 ...
 (42.28, -70.87), (42.28, -70.88), (42.28, -70.89), ...
 ...
 ... (42.53, -71.39), (42.53, -71.4), (42.53, -71.41)]

答案 1 :(得分:0)

latlong中的最后一项是浮点数;浮点数不可订阅。但是,你的问题不清楚。

如果您的问题是“为什么浮点不可订阅?”然后我会问你认为订阅浮动应该做什么。

如果你的问题是“为什么我认为我试图下标浮动?”然后答案是你正在查看latlong的最后一项,它现在是一个浮点数,因为你附加了一个;也许你打算追加(latlong [-1] [0] +1,latlong [-1] [1])。

如果您的问题是“我怎样才能更好地解决这个问题?”然后我会建议列表理解,这是python的一大优势。观察它的作用:

latLongList = [(lat/10., long/10.) for lat in range(128,135) for long in range(237,243)]

答案 2 :(得分:0)

您可以使用2个嵌套循环。

latlong = []

for lat in range(4219, 4254 + 1):
    for lng in range(-7142, -7087 + 1):
        latlong.append((lat*0.01, lng*0.01))

我使用整数然后乘以0.01,因为range函数只接受整数。

输出:

(42.19, -71.42)
(42.19, -71.41)
(42.19, -71.4)
(42.19, -71.39)
(42.19, -71.38)
...
(42.54, -70.9)
(42.54, -70.89)
(42.54, -70.88)
(42.54, -70.87)

答案 3 :(得分:0)

您可以使用简单的列表理解来完成此任务:

latlong = [(lat/100, lon/100) for lat in range(4219, 4255) for lon in range(-7142, -7086)]

您可以在列表推导(以及一般语言)here上找到更多信息。