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

如何在python中将数字字符串转换为嵌套列表

如何在python中将数字字符串转换为嵌套列表,python,python-3.x,list,Python,Python 3.x,List,我需要将一个包含数字字符串的列表转换成一个嵌套列表,每个字符串中的数字被分隔成单独的整数,我可以对这些整数进行迭代。目前,我的代码如下所示: l = [ "400000,2003,2022,83,80,51,42", "400001,2001,2023,61,46,90,75", "400002,2003,2022,75,100,90", "400003,2001,2021,74,54,76,9

我需要将一个包含数字字符串的列表转换成一个嵌套列表,每个字符串中的数字被分隔成单独的整数,我可以对这些整数进行迭代。目前,我的代码如下所示:

l = [
    "400000,2003,2022,83,80,51,42",
    "400001,2001,2023,61,46,90,75",
    "400002,2003,2022,75,100,90",
    "400003,2001,2021,74,54,76,92",
    "400004,2000,2022,55,71,75,83",
    "400005,2000,2023,84,85,78,50",
    "400006,1999,2022,45,68,52,85",
]
new = str(l[1])
print(new)
new.split(",")
print(new)
输出看起来完全相同,因此.split在这里似乎不起作用。我需要它如下所示,在这里我可以调用l[0][1]并将2003作为int获取。请不要使用pandas或其他导入库,谢谢

400000, 2003, 2022, 83, 80, 51, 42,
400001, 2001, 2023, 61, 46, 90, 75,
输出:

C:\tmp>python x.py
[(400000, 2003, 2022, 83, 80, 51, 42), (400001, 2001, 2023, 61, 46, 90, 75), (400002, 2003, 2022, 75, 100, 90), (400003, 2001, 2021, 74, 54, 76, 92), (400004, 2000, 2022, 55, 71, 75, 83), (400005, 2000, 2023, 84, 85, 78, 50), (400006, 1999, 2022, 45, 68, 52, 85)]

您需要分配
new.split(',')
一个值。这将解决它:

new_list = [a.split(',') for a in l]

正如您所说,您可以拆分每一行并将字符串转换为整数

为此,您可以使用一个简单的理解列表:

matrix=[列表(映射(int,line.split(“,”),用于l中的行]
结果将是:

[[4000000200320022,83,80,51,42],
[400001, 2001, 2023, 61, 46, 90, 75],
[400002, 2003, 2022, 75, 100, 90],
[400003, 2001, 2021, 74, 54, 76, 92],
[400004, 2000, 2022, 55, 71, 75, 83],
[400005, 2000, 2023, 84, 85, 78, 50],
[400006, 1999, 2022, 45, 68, 52, 85]]
此理解列表可以转换为经典的
for
循环,如下所示:

matrix=[]
对于l中的行:
matrix.append(列表(映射(int,line.split(“,”))

调用
new.split(',')时,它会返回一个列表。但您不使用返回值
new
本身不会更改(字符串是不可变的)。如果有保险箱,为什么?请不要使用
eval
执行如此简单的字符串到整数的转换。非常感谢!我是一个初学者,所以感谢您向我介绍eval()<如果数据来自已知来源,则代码>评估
是绝对安全的。如果存在恶意输入的可能性,则最好是
ast.literal\u eval
new_list = [a.split(',') for a in l]