在分配许多变量(或简单地实例化)时,可以这样做:
list_0, list_1, list_2 = [], [], []
这将使三个变量具有空列表。
假设,如果要列出1000个空白列表:
list_0, ... , list_999 = [], ... , []
如果要使用顶级方法,这似乎很乏味。
在这种情况下,还有我的问题,可以使用globals()
,例如:
for i in range(1000):
globals()["list_%s" % i] = []
我已经很久没有真正在SO上看到这种方法了,并且开始怀疑这是否是由于我不知道的某些缺点。
我用不同的关键字搜索过Google,并确实在second answer of this post中找到了一些用例,依此类推,但最终没有取得丰硕的成果。
任何见识将受到高度赞赏。谢谢!
答案 0 :(得分:2)
是的,这是一个坏主意。
我同意@Norrius,实际上,像这样分配的所有东西都不好,这是列表:
exec
,错误
globals
,错误
关于exec
和eval
的讨论:
Why is using 'eval' a bad practice?
另外,如您所见,使用setattr
有一个答案,
这是@Nadia对eval
的评论:
是的,使用eval是一种不好的做法。仅出于以下几个原因:
- 几乎总是有一种更好的方法
- 非常危险和不安全
- 使调试变得困难
- 慢
但也请参见:
How do I create a variable number of variables?
说字典通常是最好的:
>>> d = {'a':[1,2,3]}
>>> d['b']=[4,5,6]
>>> d
{'a': [1, 2, 3], 'b': [4, 5, 6]}
>>>