Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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
Python 将列表打印为变量值_Python_Variables_Reflection - Fatal编程技术网

Python 将列表打印为变量值

Python 将列表打印为变量值,python,variables,reflection,Python,Variables,Reflection,如何打印字符串列表作为其单个变量值 例如,以以下代码为例: a=1 b=2 c=3 text="abc" splittext = text.split(text) print(splittext) 如何将其输出到123?您可以使用eval执行此操作,但这非常危险: >>> ''.join(map(lambda x : str(eval(x)),Text)) '123' eval(也许他们最好将其重命名为evil,没有恶意,只是将其用作警告)对字符串进行求值,就像您自己会在那

如何打印字符串列表作为其单个变量值

例如,以以下代码为例:

a=1
b=2
c=3
text="abc"
splittext = text.split(text)
print(splittext)

如何将其输出到
123

您可以使用
eval
执行此操作,但这非常危险:

>>> ''.join(map(lambda x : str(eval(x)),Text))
'123'
eval
(也许他们最好将其重命名为
evil
,没有恶意,只是将其用作警告)对字符串进行求值,就像您自己会在那里对其进行编码一样。因此
eval('a')
将获取
a
的值。问题是,黑客可能会找到一些技巧,使用它注入任意代码,从而攻击您的服务器、程序等。此外,它可能会意外地改变您程序的状态。因此,有一条建议是“不要使用它,除非你完全没有其他选择”(这里的情况并非如此)

或者是一种不太危险的变体:

>>> ''.join(map(lambda x : str(globals()[x]),Text))
'123'
如果这些变量是全局变量(您可以对局部变量使用
locals()

这既丑陋又危险,因为您事先不知道
a
b
c
是什么,您也无法控制程序的哪个部分可以设置这些变量。因此,它可能允许代码注入。正如关于你问题的评论中所宣传的那样,你最好使用字典

字典法 更好的方法是使用字典(正如@Ignacio Vazquez Abrams所说):

列表而不是字符串 在上面,我们使用lambda表达式中的
str
将内容转换为字符串,并使用
'.join
连接这些字符串。但是,如果您对“结果”数组感兴趣,可以删除这些构造。例如:

>>> map(lambda x : dic[x],Text)
[1, 2, 3]
上述所有示例都适用于此

编辑

出于某种原因,我后来发现您想要打印valuesm,这可以通过以下方式轻松实现:


同样,您也可以对上述情况使用相同的方法。

您可以使用
eval
进行此操作,但这是非常危险的:

>>> ''.join(map(lambda x : str(eval(x)),Text))
'123'
eval
(也许他们最好将其重命名为
evil
,没有恶意,只是将其用作警告)对字符串进行求值,就像您自己会在那里对其进行编码一样。因此
eval('a')
将获取
a
的值。问题是,黑客可能会找到一些技巧,使用它注入任意代码,从而攻击您的服务器、程序等。此外,它可能会意外地改变您程序的状态。因此,有一条建议是“不要使用它,除非你完全没有其他选择”(这里的情况并非如此)

或者是一种不太危险的变体:

>>> ''.join(map(lambda x : str(globals()[x]),Text))
'123'
如果这些变量是全局变量(您可以对局部变量使用
locals()

这既丑陋又危险,因为您事先不知道
a
b
c
是什么,您也无法控制程序的哪个部分可以设置这些变量。因此,它可能允许代码注入。正如关于你问题的评论中所宣传的那样,你最好使用字典

字典法 更好的方法是使用字典(正如@Ignacio Vazquez Abrams所说):

列表而不是字符串 在上面,我们使用lambda表达式中的
str
将内容转换为字符串,并使用
'.join
连接这些字符串。但是,如果您对“结果”数组感兴趣,可以删除这些构造。例如:

>>> map(lambda x : dic[x],Text)
[1, 2, 3]
上述所有示例都适用于此

编辑

出于某种原因,我后来发现您想要打印valuesm,这可以通过以下方式轻松实现:


同样,您可以对上述情况使用相同的技术。

如果您想打印字符串中指定的变量值,您可以使用
局部变量(或
全局变量
,具体取决于所需内容/位置)

或者,如果在字符串中使用分隔符

>>> s='a,b,c'
>>> for v in s.split(','):
...  print(locals()[v])
... 
1
2
3

如果要打印字符串中命名变量的值,可以使用
局部变量
(或
全局变量
,具体取决于所需内容/位置)

或者,如果在字符串中使用分隔符

>>> s='a,b,c'
>>> for v in s.split(','):
...  print(locals()[v])
... 
1
2
3

通常你不会;您可以使用dict进行此操作。在请求复制/粘贴代码之前,您应该考虑您的问题。text仅用作通用变量名。这只是一个示例代码,看看能否为您指出正确的方向这听起来像是个问题。你到底想完成什么?毫无疑问,除了创建由变量名组成的字符串之外,还有更好的方法来完成您想要的任务;您可以使用dict进行此操作。在请求复制/粘贴代码之前,您应该考虑您的问题。text仅用作通用变量名。这只是一个示例代码,看看能否为您指出正确的方向这听起来像是个问题。你到底想完成什么?毫无疑问,有更好的方法来实现您想要的,然后创建一个由变量名组成的字符串。