如何通过Python的input()函数获取二维列表形式的矩阵?
解决input()获取二维列表输入的问题
要把用户输入的[[1,2],[3,4]]格式字符串转换成可操作的二维列表,有两种常用方法:
方法1:使用eval()(简单但需注意安全)
直接用eval()解析输入字符串,它会把符合Python语法的字符串转换成对应的数据结构:
data = eval(input()) print(data) # 输入[[1,2],[3,4]],输出[[1,2],[3,4]],此时data是标准二维列表,可直接操作
⚠️ 注意:如果输入来源不可信(比如用户输入恶意代码),eval()会执行代码带来安全风险,仅在可控输入场景使用。
方法2:使用ast.literal_eval()(安全推荐)
ast.literal_eval()是更安全的替代方案,它只会解析Python字面量(列表、字典、数字等),不会执行任意代码:
import ast data = ast.literal_eval(input()) print(data) # 效果和eval一致,但即使输入恶意代码也会抛出异常,不会执行
为什么list(input())会出错?
input()返回的是完整字符串"[[1,2],[3,4]]",list()会把字符串的每个字符拆分成列表元素,最终得到的是:
['[', '[', '1', ',', '2', ']', ',', '[', '3', ',', '4', ']', ']']
这显然不是你需要的二维列表结构。
内容的提问来源于stack exchange,提问作者S.A
相关产品推荐
相关产品推荐

