gpt4 book ai didi

python - 将列表组合成元组对 (x, y)

转载 作者:太空宇宙 更新时间:2023-11-03 14:18:44 24 4
gpt4 key购买 nike

我正在尝试组合通过 sys.argv 传入的数字对。示例:

python myscript.py -35.12323 112.76767 -36.33345 112.76890 -33.68689 111.8980

我的目标是将它们转换为元组中的二元组。像这样:

((-35.12323,112.76767),(-36.33345,112.76890),(-33.68689,111.8980))

这是我迄今为止尝试过的方法,但是当我将结果传递给 Shapely Point 和 Polygon 方法时出现问题。

from shapely.geometry import Polygon
from shapely.geometry import Point
import sys

def args_to_tuple(list):
arglist = []

for coord in list:
arglist.append(float(coord))

i = 0
polylist = []

for xory in arglist:
tmp = (arglist[i],arglist[i+1])
polylist.append(tmp)

return tuple(polylist)


poly = Polygon(args_to_tuple(sys.argv[3:]))

# xy pair for point is first two sys args
point = Point(args_to_tuple(sys.argv[1:3]))

print point.within(poly) # should result in true, but doesn't
print poly.contains(point) # should result in true, but doesn't

这似乎在 itertools 中很常见,但我似乎无法在该模块中找到任何可以让你成对抓取项目的东西。

最佳答案

In [10]: args_str = '-35.12323 112.76767 -36.33345 112.76890 -33.68689 111.8980'

In [11]: args = map(float, args_str.split())

In [12]: args
Out[12]: [-35.12323, 112.76767, -36.33345, 112.7689, -33.68689, 111.898]

In [13]: zip(args[::2], args[1::2])
Out[13]: [(-35.12323, 112.76767), (-36.33345, 112.7689), (-33.68689, 111.898)]

zip 可以替换成itertools.izip它产生一个迭代器而不是一个列表。

关于python - 将列表组合成元组对 (x, y),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30769734/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com