Python 3.x 基于变量向特定列表添加值的最实用方法

Python 3.x 基于变量向特定列表添加值的最实用方法,python-3.x,list,if-statement,switch-statement,conditional-statements,Python 3.x,List,If Statement,Switch Statement,Conditional Statements,标题听起来可能有点奇怪,但情况并非如此 我有一些清单。 在这里它们被初始化(全局变量): 现在我们有了一个变量,它指示我可以向其中插入数据的列表。假设它是selector=3 这意味着我应该将()我的值附加到sensor3列表中 在python中最实用的方法是什么? 如果是C风格的语言,我会使用开关盒 但是python中没有开关大小写语法。当然我可以做多个ifs,但这似乎不是最好的方法 我想知道,由于列表中只有一个字母每次都会更改,也许有更好的方法可以根据选择器变量选择适当的列表添加到appen

标题听起来可能有点奇怪,但情况并非如此

我有一些清单。 在这里它们被初始化(全局变量):

现在我们有了一个变量,它指示我可以向其中插入数据的列表。假设它是
selector=3

这意味着我应该将()我的值附加到
sensor3
列表中

在python中最实用的方法是什么? 如果是C风格的语言,我会使用
开关盒

但是python中没有
开关大小写
语法。当然我可以做多个
if
s,但这似乎不是最好的方法


我想知道,由于列表中只有一个字母每次都会更改,也许有更好的方法可以根据
选择器
变量选择适当的列表添加到
append()

sensor0, sensor1, sensor2, sensor3 = ([] for i in range(4))
sensor3 = 20
selector =3 
result = eval("sensor"+str(selector))
print(result)
但使用列表可能是更好的选择。 使用列表

sensor = [[] for i in range(4)]
selector = 3
sensor[selector] = 20
print(sensor[selector])

为什么不把它作为一个列表(
sensors=[[]表示范围内的i(4)]
),然后
sensors[selector]。append(data)
?。。。还是字典?@Carcigenicate谢谢!第一个命令是初始化,对吗?但我想把所有这些列表作为全局变量传递给一个函数。我可以用一行程序也这样做吗?@user1584421是的,第一位是替换初始化。您可以让函数接受2D列表,或者执行
您的函数(*sensors)
<代码>*
将内部列表解压到参数列表中(在这种情况下,函数需要接受四个参数)。@AndrejKesely不确定我是否理解……谢谢。但是在您的第二个代码段中,您确定第一行(
sensor=[c[]fori in range(4)]
)是正确的吗?我在REPL中键入了它,得到了
SyntaxError:invalid syntax
@user1584421我在[]之前意外键入了c。已经编辑了答案,现在应该可以了。谢谢,但这不是一个好的解决方案,因为我无法将()新值附加到列表中。当我尝试
data=100时;传感器[selector]。追加(数据)
,我得到了
AttributeError:'int'对象没有属性“append”
,这是因为您为传感器[3]分配了20个属性。这意味着您的传感器变量包含
[]、[]、[]、[]、20]
,传感器[3]不再是列表。您需要编辑问题并更好地解释您的问题。
sensor = [[] for i in range(4)]
selector = 3
sensor[selector] = 20
print(sensor[selector])