如何在python中使用名称中的变量

时间:2015-05-02 05:42:09

标签: python python-2.7

我有1000个变量,a1,a2,a3,a4,a5等等。有没有办法使用循环

将所有值初始化为值100

我的尝试:

for i in range(1,1001):
    "a"i=100

我在这里缺少基本语法。

4 个答案:

答案 0 :(得分:4)

永远不要这样做。这样做你绝对没有任何好处。如果您以这种方式设置它们,如何动态地重新引用这些变量?改为使用列表或字典。

a_list = [None] + [100] * 1000
# `a_list[n]` in place of `an`, here

a_dict = {num:100 for num in range(1, 1001)}
# `a_dict[n]` in place of `an`, here

编辑为您的棋盘类比:

import string

class ChessBoard(list):
    def __init__(self, side_length, initial_value=None):
        super().__init__()
        for _ in range(side_length):
            self.append([initial_value for _ in range(side_length)])

    def get(self, notation):
        """Maps chess notation to the 2D list"""

        indices = dict([(lett, num) for num,lett in 
                        enumerate(string.ascii_letters, start=1)])
        # {'a':1, 'b':2, ... 'Z':52}
        x, y = indices[notation[0]]-1, int(notation[1])-1
        return self[y][x]

board = ChessBoard(1000, 100)  # how do we index the 1000th...nevermind
board.get("a6")

答案 1 :(得分:0)

要做这样的事情,你真的应该使用一个列表。 初始化长度为1000的列表,每个条目设置为100可以通过

完成
a = [100]  * 1000

你可以使用exec在列表之外设置这样的变量,但这不是好习惯,除非你有一些奇怪的令人信服的理由这样做。

请注意,这些条目的索引编号为0到999。

答案 2 :(得分:0)

您可以使用Python Arrays/Lists.执行此操作。对于您的情况,您可以通过执行以下操作创建1000 100的列表:

my_array = [100]*1001

要在该列表中找到某个值,请"索引"进去。例如:

print(my_array[300])

print语句将打印列表中的第301个值(因为数组索引从0开始计数)。

答案 3 :(得分:0)

我会重申这是一种不好的做法,但你可以这样做。

for i in xrange(1, 1001):
    globals()['a%s' % i] = 100

for i in xrange(1, 1001):
    name = 'a%d' % i
    print '%s = %d' % (name, globals()[name])

第二个循环只打印它们。