Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python2.7中从列表中自动定义元素?_Python_Python 2.7_Variables_Assign - Fatal编程技术网

如何在Python2.7中从列表中自动定义元素?

如何在Python2.7中从列表中自动定义元素?,python,python-2.7,variables,assign,Python,Python 2.7,Variables,Assign,我想创建一个字符串和整数的列表,并使字符串作为变量工作,其值为整数 list = ("y","1","x","3") str(list[0]) == int(list[1]) str(list[2]) == int(list[3]) z = x + y print(z) 我试过了,但还是不行。有人知道一个可能的解决办法吗 使用字典: data = {"y": 1, "x": 3} z = data["y"] + data["x"] print(z) # 4 此外: list = ("x

我想创建一个字符串和整数的列表,并使字符串作为变量工作,其值为整数

list = ("y","1","x","3")
str(list[0]) == int(list[1])
str(list[2]) == int(list[3])

z = x + y
print(z)
我试过了,但还是不行。有人知道一个可能的解决办法吗

使用字典:

data = {"y": 1, "x": 3}

z = data["y"] + data["x"]

print(z) # 4
此外:

list = ("x", "1", "y", "3")
不创建创建创建
元组的列表。另外,不要使用类似于
列表
的名称,因为它使用的名称与内置的
列表
相同

In [1]: exec 'y=1+1'

In [2]: y
Out[2]: 2
不用说,字典更好,而且你不应该相信用户提供的输入,我个人强烈反对你这样做。

你可以使用
zip()
函数来获取对,然后使用
exec()
将整数分配给名称:

>>> items = ("y","1","x","3")
>>> for i,j in zip(items[0::2], items[1::2]):
...     exec("{}={}".format(i,j))
... 
>>> x+y
4
但是请注意,您需要确定项目的标识,因为使用
exec()
可能会损害您的机器

或者,作为一种更具python风格的方法,您可以使用dict:

>>> items = ("y","1","x","3")
>>> the_dict = {i:int(j) for i, j in zip(items[0::2], items[1::2])}
>>> 
>>> the_dict['x'] + the_dict['y'] 
4

同样,在这种情况下,您需要确定项目的类型,因为如果数字不是有效数字,转换数字可能会引发异常。

不清楚您最终要做什么,但您可能应该查看SymPy?+1,但为什么使用dict.get而不是getitem access?这只会将一个有用的
KeyError
变成一个不太有用的
TypeError
@wim,你说得对。我习惯了总是用
。把
和字典结合起来。对于本例,通过
[]
访问就足够了。我已经把它编辑掉了。我想过,但我想做的是从输入中获取第一个,而字典不是一个非常有用的版本。我将解释真正的目的:当用户编写类似“y=3,x=2”的输入时。然后我将这些部分分开,进行类似(z=2x-y)的操作,然后打印解决方案。问题是idk怎么做…为什么你想让你的用户输入这个:“y=3,x=2”?你把事情复杂化了。为什么不向用户询问x的值和y的值?