【问题标题】:In python create a list with a variable in the name [duplicate]在python中创建一个名称为变量的列表[重复]
【发布时间】:2012-08-25 13:57:13
【问题描述】:

我正在尝试使用 python 中的 for 循环生成一系列(空)列表,并且我希望列表的名称包含一个变量。例如y0、y1、y2 等。理想情况下看起来像这样:

for a in range (0,16777216):
global y(a)=[]

【问题讨论】:

  • 你不想那样做。查看实际操作的答案。
  • 创建您不会立即使用的空数据结构是不符合 Python 的。 Python 能够进行惰性求值,尤其是在它的迭代数据结构中。好好利用它!
  • 我的最终目的是通过创建一堆列表作为 y 值和位置作为 x 值来伪造一个表格。不得不使用另一个列表似乎有点麻烦。
  • @schwal:我认为大多数 Python 程序员会认为你完全倒退了。如果您使用 dict 或列表列表,那么 您的表 - 不需要伪造。实际上,您要创建的局部变量将简单地存在于它们的 自己的 locals() 字典中。所以在后台你会使用相同的数据结构,只是不太方便,这没有多大意义。
  • @schwal:将数据放在变量名中是很麻烦的。

标签: python list for-loop


【解决方案1】:

你为什么不做一个列表字典?

y = {}
for a in range (0,16777216):
    y[a] = []

也为了简洁:https://stackoverflow.com/a/1747827/884453

y = {a : [] for a in range(0,16777216)}

【讨论】:

  • 除了所有的键都是整数,所以可能是列表列表或稀疏数组?
  • 我打错了,它不应该是一个字符串。固定。
  • 添加了字典理解
【解决方案2】:

也许你应该检查一下 defaultdict

form collection import defaultdict

# This will lazily create lists on demand
y = defaultdict(list)

另外,如果您想要对键的约束覆盖默认的__getitem__ 函数,如下所示...

def __getitem__(self, item):
    if isintance(item, int) and 0 < item < 16777216:
         return defaultdict.__getitem__(self, item)
    else:
         raise KeyError

【讨论】:

    【解决方案3】:

    答案是:不要。而是创建一个列表,以便您使用y[0]y[1] 等访问变量。有关信息,请参阅the accepted answer here

    【讨论】:

    • 您应该将此问题标记为与您链接的问题重复。
    【解决方案4】:

    不确定这是否正是您想要的,但您不能通过简单地创建列表列表来模拟相同的行为吗?所以your_list[0] 将对应于y0

    【讨论】:

      猜你喜欢
      • 2020-04-18
      • 1970-01-01
      • 1970-01-01
      • 2020-08-20
      • 2021-07-05
      • 1970-01-01
      • 2022-11-13
      • 2015-01-21
      • 1970-01-01
      相关资源
      最近更新 更多