首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有一个值的数组中非序列的Python迭代

具有一个值的数组中非序列的Python迭代
EN

Stack Overflow用户
提问于 2016-03-16 09:59:48
回答 1查看 565关注 0票数 1

我正在编写一个代码来返回点列表中点的坐标。点数类的列表定义如下:

代码语言:javascript
复制
class Streamline:

## Constructor
#  @param ID     Streamline ID
#  @param Points list of points in a streamline
def __init__ ( self, ID, points):
    self.__ID           = ID
    self.__points        = points

## Get all Point coordinates
#  @return Matrix of Point coordinates
def get_point_coordinates ( self ):
    return np.array([point.get_coordinate() for point in self.__points])

使用

代码语言:javascript
复制
class Point:
## Constructor
#  @param ID     Streamline ID
#  @param cor    List of Coordinates
#  @param vel    List of velocity vectors (2D)
def __init__ ( self, ID,  coord, veloc):
    self.__ID           = ID
    self.set_coordinate( coord )
    self.set_velocity( veloc )

问题是,我在代码开始时定义了一个流线型,在点列表中有一个点。沿着这条路,我调用了函数get_point_coordinates,点列表上的迭代会引发以下错误:

代码语言:javascript
复制
return np.array([point.get_coordinate() for point in self.__points])
TypeError: iteration over non-sequence

我需要找到一种方法来绕过这个错误,并且整齐地返回一个具有点坐标的1x2矩阵。

我看过this question,但没有多大帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-16 10:20:26

  1. 要么用一个序列而不是一个点调用流线型构造函数:sl = Streamline(ID, [first_point])
  2. 或确保构造函数使单个点可迭代: 类流线: def __init__ ( self,ID,first_point):self.__ID = ID self.__points = first_point
  3. 编写构造函数以接受单点(Streamline(ID, point1))和点序列(Streamline(ID, [point1, point2, ...]))是个坏主意。如果你愿意的话,你可以 从集合导入Iterable类流线型: def __init__ ( self,ID,first_point):self.__ID = ID self.__points = points isinstance( points,Iterable)
  4. 比3更好的做法是通过*解压缩参数中给出的点,以启用Streamline(ID, point1)Streamline(ID, point1, point2, ...)。 类流线: def __init__ ( self,ID,* points ):self.__ID = ID self.__points =points
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36032280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档