如何使用“ for”循环创建变量名?

时间:2018-11-27 23:47:49

标签: python string loops variables

我知道我的头衔可能有些混乱,但是我很难描述我的问题。基本上,我需要创建一堆都等于0的变量,并且我想通过for循环来做到这一点,因此不必对它进行硬编码。

问题是每个变量都需要具有不同的名称,并且当我从for循环中调用数字来创建变量时,它无法识别我是否需要for中的数字环。这是一些代码,因此更有意义:

total_squares = 8
box_list = []
for q in range(total_squares):
  box_q = 0
  box_list.append(box_q)

我需要它来创建box_1并将其添加到列表中,然后创建box_2并将其添加到列表中。只是认为我在调用变量box_q,而不是在for循环中调用数字。

3 个答案:

答案 0 :(得分:0)

动态创建变量是anti-pattern,应避免。您实际上需要的是list

total_squares = 8
box_list = []
boxes = [0] * total_squares
for q in range(total_squares):
  box_list.append(boxes[q])

然后,您可以使用以下语法引用所需的任何元素(例如box_i

my_box = box_list[boxes[i]]

答案 1 :(得分:0)

您可以使用字典。我认为这种方法更好,因为您可以看到键和值对。

  

代码

total_squares=8
box_list={}
for q in range(total_squares):
    box_list['box_'+str(q)]=0

print(box_list)
  

输出

{'box_0': 0, 'box_1': 0, 'box_2': 0, 'box_3': 0, 'box_4': 0, 'box_5': 0, 'box_6': 0, 'box_7': 0}

答案 2 :(得分:0)

您似乎正在尝试使用q的值来编辑box_q中的'q',但是qbox_q是两个完全不同的变量

您可以动态地操作变量名,但是在Python中很少这样做。很好的解释:https://nedbatchelder.com/blog/201112/keep_data_out_of_your_variable_names.html

相反,您可以使用列表并使用列表索引访问项目,例如

total_squares = 8
box_list = []
for q in range(total_squares):
    box_list.append(0)

您可以使用box_list[0]box_list[1]等访问每个项目。也可以更简洁地创建盒子:

boxes = [0] * total_squares

如果您希望您的盒子包含某些东西,并具有这种命名结构,则可以使用字典:

boxes_dict = {'box_{}'.format(q): 0 for q in range(total_squares)}

这将创建具有total_squares个键值对的字典。您可以使用boxes_dict['box_0']boxes_dict['box_1']等访问每个框。甚至可以将0的值更改为在框内放置一些内容,例如

boxes_dict['box_2'] = "Don't use dynamic variable naming"
boxes_dict['box_3'] = 'And number your boxes 0, 1, 2 ... etc'