我看了一遍,但没找到答案。
我要做的是创建一个从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
答案 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上找到更多信息。