【问题标题】:Python create variable according to for loop index [duplicate]Python根据for循环索引创建变量[重复]
【发布时间】:2017-12-16 17:29:46
【问题描述】:

我正在尝试为 for 循环的每次迭代创建变量:

对于范围内的 i(10):
x(i) = 'abc'

这样我会得到 x1, x2, x3, x4, .... x10,都等于 'abc'

有人知道怎么做吗?谢谢!

【问题讨论】:

  • 你知道Python中的lists吗?
  • 这个问题已经问过很多次了,不要用evallocals之类的——用字典来映射键值:{'x1': 'abc', 'x2': 'xyz', ...}

标签: python variables for-loop


【解决方案1】:

您不应该这样做,如果您想按名称访问它们,请将您的值存储在 dict 中,或者如果您想按索引访问它们,请将它们存储在 list 中,但如果您真的坚持:

for i in range(10):
    locals()["x" + str(i)] = "abc"  # use globals() to store the vars in the global stack

print(x3)  # abc

【讨论】:

  • 一种不太可能需要创建此类自动变量的情况是,通过 tabpy 包中的 query() 函数从 python 调用 TabPy (Tableau Python Server)。此处使用可变长度的参数集合是由于 Tableau 的限制(没有多列数据格式)
  • 您好,我同意您关于使用 dict 而不是在 for 循环内创建变量的观点,但是如果我需要在每次迭代时以 dict 的同名存储不同的值,则不能完成了,或者我仍然不知道该怎么做。感谢您的回答,如果您对此有所了解,那就太好了。
【解决方案2】:

这可能是初学者最简单的方法。您可能想学习如何使用列表:

>>> x = []
>>> for i in range(10):
    x.append('abc')

>>> print(x[0])
abc
>>> print(x[8])
abc
>>> print(x)
['abc', 'abc', 'abc', 'abc', 'abc', 'abc', 'abc', 'abc', 'abc', 'abc']

您也可以使用globals 或本地人:

>>> for i in range(10):
    globals()["x" + str(i)] = 'abc'
>>> x1
'abc'

有用的链接:

  1. Data Structures

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-19
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多