python将嵌套整数列表的字符串表示形式转换为嵌套整数列表
我试图读取嵌套列表的字符串表示形式,并将其转换为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
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
。