【发布时间】:2015-09-13 03:51:11
【问题描述】:
我使用的是 Python 2.7,遇到了以下情况:
我有一个 Polygon 对象,它由存储在列表中的 N 个顶点组成。我已经抽象出一个函数rand_xy(),它生成一个随机点作为顶点,我想创建具有N个随机顶点的Polygon对象。
我试过了:
vertices = [ rand_xy() ] * N
但它列出了 N 个完全相同的顶点。我想这是有道理的,因为对 rand_xy() 的调用首先被评估,然后被复制 N 次。
我希望它通过调用rand_xy() N 次来代替它。有没有办法做到这一点(最好是一行)?
我意识到“显而易见”的方法就是这样做:
vertices = []
for i in range( 0 , N ):
vertices.append( rand_xy() )
但我的 Polygon 构造函数是
def __init__( self , vertices , color )
如果我可以将vertices 的默认值设置为像这样的 N 个点的随机列表,我会非常喜欢:
def __init__( self , vertices = [ rand_xy() ] * N , color = rand_rgb() )
这样,调用不带参数的Polygon 构造函数会给我一个随机的新Polygon。或者对于构造函数有更好的设计选择吗?或者这不能在 Python 中完成?
感谢您的帮助!
【问题讨论】:
标签: python list python-2.7