0

例如,如何在 python 中创建具有动态名称的列表

for i in range(len(myself)):
   list(i) = []

我应该用什么代替 list(i) ?这意味着我想要一些如下名称:

list1
list2
list3
...
4

2 回答 2

7

我建议您只使用列表或字典而不是动态变量名称。下面的所有版本都会导致lists[0], lists[1]etc are [],这似乎与您想要的足够接近,并且从长远来看将更具可读性/可维护性。(注意:我使用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()-坏主意。另请参阅评论以了解更多关于为什么这些事情是一个坏主意以及谈论它们时会让人感到困惑的更多讨论。

于 2012-06-09T19:22:42.300 回答
5

动态变量名称很少是一个好主意。使用字典几乎总是更好:

myLists = {"list{}".format(i):[] for i in range(len_i)}

不要list用作变量名 - 它隐藏了现有的关键字。

于 2012-06-09T19:11:12.177 回答