Python 为变量列表的某个索引赋值

Python 为变量列表的某个索引赋值,python,Python,这可能是一个基本问题 假设我有几个变量,x1,x2,x3 我想给其中一个变量赋值,具体取决于某个索引c的值 理想情况下,我想做一些类似的事情 [x1,x2,x3][c]=值 所以当c=0时,x1被赋值,当c=1时,x2被赋值,依此类推 但python似乎不允许我这么做 当然,我可以这样做 if c = 0: x1 = value elif c = 1: x2 = value 但这太长了 我该怎么办?您可以将变量分配给一个列表,然后使用map重新分配值,我怀疑这不是处理应用程序的

这可能是一个基本问题

假设我有几个变量,x1,x2,x3

我想给其中一个变量赋值,具体取决于某个索引c的值

理想情况下,我想做一些类似的事情 [x1,x2,x3][c]=值 所以当c=0时,x1被赋值,当c=1时,x2被赋值,依此类推

但python似乎不允许我这么做

当然,我可以这样做

if c = 0:
    x1 = value
elif c = 1:
    x2 = value
但这太长了


我该怎么办?

您可以将变量分配给一个列表,然后使用map重新分配值,我怀疑这不是处理应用程序的最佳方式,但如果没有更多信息,我无法进一步评论

试试这个:

x1, x2, x3 = 2, 5, 10

var_list = [x1,x2,x3]

c = 1
var_list[c] = 42

x1, x2, x3 = map(lambda x:x,var_list)

print(x1, x2, x3) 

您可以将变量分配到一个列表,然后使用map重新分配值,我怀疑这不是处理应用程序的最佳方式,但如果没有更多信息,我就无法进一步评论

试试这个:

x1, x2, x3 = 2, 5, 10

var_list = [x1,x2,x3]

c = 1
var_list[c] = 42

x1, x2, x3 = map(lambda x:x,var_list)

print(x1, x2, x3) 

您可以将变量保存在字典中,如下所示:

vars = ['x0', 'x1', 'x2']

vars_value = {var: value for var, value in zip(vars, [None] * len(vars)}  # initialisation

vars_value[vars[c]] = <value>
vars=['x0','x1','x2']
vars_value={var:var的值,zip中的值(vars,[None]*len(vars)}
vars_值[vars[c]=

您可以将变量保存在字典中,如下所示:

vars = ['x0', 'x1', 'x2']

vars_value = {var: value for var, value in zip(vars, [None] * len(vars)}  # initialisation

vars_value[vars[c]] = <value>
vars=['x0','x1','x2']
vars_value={var:var的值,zip中的值(vars,[None]*len(vars)}
vars_值[vars[c]=

这似乎是一个问题。为什么不从列表开始呢?在Mark所说的基础上,如果出于某种原因您不能使用列表,那么如果elif链是正确的解决方案,则使用
。因为x1、x2和x3是由其他人预定义的,并且在其他地方使用。(如果变量实际命名为
x1
x2
,等等,并且您只想在
c
具有相应的整数值时分配它们,那么在某些情况下,您可以使用Python黑客来简化这类事情,但这些技巧会使您的代码无法读取,并举例说明如何不编写Python.)这看起来像是一个。为什么不先用一个列表呢?在Mark所说的基础上,如果出于某种原因你不能使用列表,那么一个
if elif
链就是正确的解决方案。因为x1、x2和x3是由其他人预定义的,并且在其他地方使用。(如果变量实际命名为
x1
x2
,等等,并且您只想在
c
具有相应的整数值时分配它们,那么在某些情况下,您可以使用Python黑客来简化这类事情,但这些技巧会使您的代码无法读取,并举例说明如何不编写Python.)考虑到问题的约束条件,这不是一个坏主意……如果明确包括OP的案例,即根据
c
的值设置一个变量,那么这可能是一个更好的答案。考虑到问题的约束条件,这不是一个坏主意……如果明确包括OP的案例,即设置一个,那么这可能是一个更好的答案基于
c
值的变量。