每次迭代都创建唯一对象的循环。(基于哪个迭代)

2024-05-14 20:12:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用图形.pylib,需要根据用户想要的数量创建多个多边形(比如4个)。在

我只需要知道如何为这些多边形创建一个唯一的名称,例如polygon1、polygon2、polygon4、polygon5。在

谢谢。在


Tags: 用户名称图形数量多边形pylibpolygon2polygon1
3条回答

坏方法:

您可以使用exec。在

for i in range(5):
    exec("polygon%d = Polygon(something)"%i)

这是非常安全的,因为iif只是一个整数。但是使用exec是一个非常糟糕的做法,因为它非常脆弱。用户可以输入,也可以不小心输入一段代码,从而扰乱您的内存。所以,除非你真的去做,否则你不应该使用它。在

另外,如果你是全局变量的粉丝,你可以使用这个。在

^{pr2}$

但也不建议过于频繁地使用全局变量。在

更好的方式

或者,可以将其存储在列表或字典中:

for i in range(5):
    lst.append(Polygon(something_else)) #store it in a list
    dict['polygon%d'%i] = Polygon(another_thing) #store it in a dict

希望这有帮助!!在

你可以把它当作一个列表来处理

polygon = []
polygon.append(...)

并以

^{pr2}$

如果你真的想这么做,你可以:

for i in range(count):
    new_poly = Polygon(whatever)
    new_name = 'polygon{}'.format(i+1)

然后你必须把这个新名字和新多边形存储在某处。可能是这样的:

^{pr2}$

如果你想让每个名字都变成一个新的变量…那是个坏主意。You don't want to dynamically create variables,因为你想keep data out of your variable names。在

真的,这里根本不需要名字。这将创建count多边形的列表:

polygons = [Polygon(whatever) for _ in range(count)]

现在,如果您需要通过号码访问它们,请执行以下操作:

polygons[2]

(请注意,列表是从0开始的,而不是从1开始的)。在

或者,如果你需要访问所有的列表,你就得到了完整的列表,所以你不必到处写(polygon1, polygon2, polygon3, polygon4);只要polygons。在

相关问题 更多 >

    热门问题