Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.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_Python 3.x - Fatal编程技术网

python将嵌套整数列表的字符串表示形式转换为嵌套整数列表

python将嵌套整数列表的字符串表示形式转换为嵌套整数列表,python,python-3.x,Python,Python 3.x,我试图读取嵌套列表的字符串表示形式,并将其转换为python中的嵌套列表。我尝试了以下方法: l=input("enter nested list") result=eval(l) 输入[[1],[2]] 结果是我刚刚输入的字符串,因此如果我print(l[0])结果是'['。 任何帮助都将不胜感激。eval不安全,因为它不会对输入运行任何背景检查。请改用内置模块ast中的literal\u eval。您可以编写: from ast import literal_eval as leval

我试图读取嵌套列表的字符串表示形式,并将其转换为python中的嵌套列表。我尝试了以下方法:

l=input("enter nested list")
result=eval(l)
输入
[[1],[2]]
结果是我刚刚输入的字符串,因此如果我
print(l[0])
结果是
'['

任何帮助都将不胜感激。

eval
不安全,因为它不会对输入运行任何背景检查。请改用内置模块
ast
中的
literal\u eval
。您可以编写:

from ast import literal_eval as leval

l = '[[1],[2]]'
result = leval(l)
print(result)     # -> [[1], [2]]
print(result[0])  # -> [1]


正如@brogrammer所指出的,代码的问题在于,您假设
eval
在适当的位置工作,并且当您执行
eval(l)
l
时,代码会被修改。这不是它的工作方式,尽管
eval
返回其结果并将其分配给代码中的
result
。尝试执行
打印(结果[0])
取而代之,您将看到。

eval
是不安全的,因为它不会对输入运行任何背景检查。请使用内置模块
ast
中的
literal\u eval
取而代之。您可以编写:

from ast import literal_eval as leval

l = '[[1],[2]]'
result = leval(l)
print(result)     # -> [[1], [2]]
print(result[0])  # -> [1]


正如@brogrammer所指出的,代码的问题在于,您假设
eval
在适当的位置工作,并且当您执行
eval(l)
l
时,代码会被修改。这不是它的工作方式,尽管
eval
返回其结果并将其分配给代码中的
result
。尝试执行
打印(结果[0])
取而代之,您将看到。

您不能使用
eval
而是
exec
。无需导入任何模块

l = input("Enter nested list: ")
exec('result = '+l)
print(result)
print(result[0])
测试:

Enter nested list: [[1],[2]]
[[1], [2]]
[1]

您不能使用
eval
而是
exec
。无需导入任何模块

l = input("Enter nested list: ")
exec('result = '+l)
print(result)
print(result[0])
测试:

Enter nested list: [[1],[2]]
[[1], [2]]
[1]

您是否可以将您尝试过的输入列表添加到您的问题中?您是否可以发布一个输入所需输出的示例?您将结果存储在
result
变量中。为什么要选中
print(l[0])
?我无法重现您的问题。
eval
确实有效,但不是正确的做法,因此应该避免。您可以将您尝试过的输入列表也添加到您的问题中吗?您可以发布输入所需输出的示例吗?您将结果存储在
result
变量中。为什么要检查
print(l[0])
?我无法重现您的问题。
eval
确实有效,但不是正确的做法,因此应该避免。检查我的答案。您不能使用
eval
,但可以使用
exec
。检查我的答案。您不能使用
eval
,但可以使用
exec