Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将列表转换为序列以生成多边形_Python_List_Sequence_Sympy - Fatal编程技术网

Python 将列表转换为序列以生成多边形

Python 将列表转换为序列以生成多边形,python,list,sequence,sympy,Python,List,Sequence,Sympy,我想从点列表中创建一个多边形。文件上说它需要一系列的点。我不知道如何转换 from sympy import Point2D, Polygon # this works p1 = Polygon(Point2D(0,0), Point2D(1,0), Point2D(1,1), Point2D(0,1)) print(p1.area) # this fails at the Polygon call points=[] points.append(Point2D(0,0)) points.a

我想从点列表中创建一个多边形。文件上说它需要一系列的点。我不知道如何转换

from sympy import Point2D, Polygon

# this works
p1 = Polygon(Point2D(0,0), Point2D(1,0), Point2D(1,1), Point2D(0,1))
print(p1.area)

# this fails at the Polygon call
points=[]
points.append(Point2D(0,0))
points.append(Point2D(0,1))
points.append(Point2D(1,1))
points.append(Point2D(1,0))
t = tuple(points)
p = Polygon(t)
当它失败时,我得到这个

Traceback (most recent call last):
  File "t_polygon.py", line 14, in <module>
    p = Polygon(t)
  File "C:\Program Files (x86)\Python\Lib\site-packages\sympy\geometry\polygon.py", line 126, in __new__
    vertices = [Point(a, dim=2, **kwargs) for a in args]
  File "C:\Program Files (x86)\Python\Lib\site-packages\sympy\geometry\polygon.py", line 126, in <listcomp>
    vertices = [Point(a, dim=2, **kwargs) for a in args]
  File "C:\Program Files (x86)\Python\Lib\site-packages\sympy\geometry\point.py", line 157, in __new__
    raise ValueError('Nonzero coordinates cannot be removed.')
ValueError: Nonzero coordinates cannot be removed.
回溯(最近一次呼叫最后一次):
文件“t_polygon.py”,第14行,在
p=多边形(t)
文件“C:\Program Files(x86)\Python\Lib\site packages\sympy\geometry\polygon.py”,第126行,新__
顶点=[点(a,dim=2,**kwargs)表示参数中的a]
文件“C:\Program Files(x86)\Python\Lib\site packages\sympy\geometry\polygon.py”,第126行,在
顶点=[点(a,dim=2,**kwargs)表示参数中的a]
文件“C:\Program Files(x86)\Python\Lib\site packages\sympy\geometry\point.py”,第157行,新__
raise VALUERROR('无法删除非零坐标')
ValueError:无法删除非零坐标。
而不是这个:

t = tuple(points)
p = Polygon(t)
你需要写:

t = tuple(points)
p = Polygon(*t)  

尝试
p=Polygon(*t)
Yes!另外,我可以跳过对
tuple()
的调用,直接
p=Polygon(*points)
可以工作。我不知道
*
是解包操作符。现在我更聪明了。