我想清理一些我写过的代码,以便扩展我想要做的事情.为了做到这一点,我想理想地创建一个对象的引用列表,这样我就可以使用循环系统地设置对象,而不必将对象放在列表中.我已经阅读了Python处理引用和传递的方式,但还没有找到一种方法来有效地执行此操作.
为了更好地展示我正在尝试做的事情:
我正在使用散景,并希望设置大量的选择框.每个框都是这样的
select_one_name = Select(
title = 'test',
value = 'first_value',
options = ['first_value', 'second_value', 'etc']
)
Run Code Online (Sandbox Code Playgroud)
设置每个选择都很好,当我只有几个时,但是当我有20个时,我的代码变得非常长而且笨重.我希望能够做的,是有一个列表sample_list = [select_one_name, select_two_name, etc]是然后依次通过,设置每个值我可以select_one_name,select_two_name等等.但是,我想有我引用select_one_name仍然指向正确的值,而不是必须通过调用来引用该值sample_list[0].
我不确定这是否可行 - 如果有更好的方法可以做到这一点,而不是创建一个参考列表,请告诉我.我知道我可以创建一个对象列表,但我试图避免这种情况.
作为参考,我使用的是Python 2.7,Anaconda发行版,Windows 7.谢谢!
关注@Alex Martelli的帖子如下:
我认为这可能不起作用的原因是因为当我尝试使用列表列表进行小型测试时,我没有得到我想要的结果.展示
x = [1, 2, 3]
y = [4, 5, 6]
test = [x, y]
test[0].append(1)
Run Code Online (Sandbox Code Playgroud)
结果,x = [1, 2, 3, 1]但如果相反,我使用test[0] = [1, 2],然后x仍然[1, 2, 3],虽然test本身反映了变化.
回到我原来的例子,我想我会看到相同的结果,从设置到相等.这不是真的吗?