2 回答

TA贡献1772条经验 获得超5个赞
我建议您只使用列表或字典,而不要使用动态变量名。下面的所有版本都导致lists[0],lists[1]等为[],看起来似乎与您想要的足够接近,并且从长远来看将更具可读性/可维护性。(注意:我使用lists而不是list作为变量名,因为后者会覆盖内置list函数,您可能不希望这样做)。
1)具有lists列表列表的版本(数字只是列表的顺序):
lists = [[] for i in range(len(myself))]
2)相同,但是使用for循环而不是列表理解:
lists = []
for i in range(len(myself)):
lists.append([])
3)版本lists是带有数字作为键的列表的字典(如果您以后要删除某些值,则更加灵活):
lists = {}
for i in range(len(myself)):
lists[i] = []
关于动态变量名,即像这样的变量,list1而不是lists[1]...认真地说,您可能不应该这样做。它不必要地复杂且难以维护。考虑一下-下个月您将要修改脚本,然后尝试找出变量的list1定义位置,而纯文本搜索将无法做到这一点。真痛苦
但是,如果你真的想出于某种原因,这是可能的exec- 这里有一些理由不使用它 -或修改locals()- 根据文档坏主意。另请参阅评论以获取更多讨论,以讨论这些东西为什么不是一个好主意,甚至在谈论这些问题时也令人困惑。

TA贡献1834条经验 获得超8个赞
动态变量名很少是一个好主意。最好总是使用字典:
myLists = {"list{}".format(i):[] for i in range(len_i)}
不要list用作变量名,它会隐藏现有的关键字。
添加回答
举报