Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.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-如何将字符串矩阵转换为int?_Python_Python 3.x - Fatal编程技术网

Python-如何将字符串矩阵转换为int?

Python-如何将字符串矩阵转换为int?,python,python-3.x,Python,Python 3.x,我得到了列表的2D矩阵,字符串如下: somelist = [["12","10","0"] ["0","33","60"]] 我需要将所有这些str转换为int。 到目前为止,我的代码是: for i in somelist: for j in i: j = int(j) 或使用地图: >>> [list(map(int, x)) for x in somelist] [[12, 10, 0], [0, 33

我得到了列表的2D矩阵,字符串如下:

somelist = [["12","10","0"]
            ["0","33","60"]]
我需要将所有这些
str
转换为
int
。 到目前为止,我的代码是:

for i in somelist:
        for j in i:
            j = int(j)
或使用地图:

>>> [list(map(int, x)) for x in somelist]
[[12, 10, 0], [0, 33, 60]]
这是您的固定代码:

somelist = [["12","10","0"],
            ["0","33","60"]]

for n, i in enumerate(somelist):
    for k, j in enumerate(i):
        somelist[n][k] = int(j)

print(somelist)
输出:

[[12, 10, 0], [0, 33, 60]]
或使用地图:

>>> [list(map(int, x)) for x in somelist]
[[12, 10, 0], [0, 33, 60]]
这是您的固定代码:

somelist = [["12","10","0"],
            ["0","33","60"]]

for n, i in enumerate(somelist):
    for k, j in enumerate(i):
        somelist[n][k] = int(j)

print(somelist)
输出:

[[12, 10, 0], [0, 33, 60]]

您的代码无法工作,因为Python中的
int
是一个不可变类型。如果我改变一个int变量,它不会改变地址中的值,但会改变整个变量。因此,以前持有它的任何列表或对象都不会更改。以下是一些例子:

In [1]: a_list = [1,2,3]

In [2]: var = a_list[0]

In [3]: var
Out[3]: 1

In [4]: id(var)
Out[4]: 4465792624

In [5]: var = 30

In [6]: id(var) # A different address
Out[6]: 4465793552

In [7]: a_list
Out[7]: [1, 2, 3]

In [8]: id(a_list[0])
Out[8]: 4465792624

In [9]: a_list[0] = 30

In [10]: a_list
Out[10]: [30, 2, 3]
这就是为什么如果您做了这一微小的更改,您的代码将正常工作:

for i in somelist:
    for ind, j in enumerate(i):
        i[ind] = int(j)

您的代码无法工作,因为Python中的
int
是一个不可变类型。如果我改变一个int变量,它不会改变地址中的值,但会改变整个变量。因此,以前持有它的任何列表或对象都不会更改。以下是一些例子:

In [1]: a_list = [1,2,3]

In [2]: var = a_list[0]

In [3]: var
Out[3]: 1

In [4]: id(var)
Out[4]: 4465792624

In [5]: var = 30

In [6]: id(var) # A different address
Out[6]: 4465793552

In [7]: a_list
Out[7]: [1, 2, 3]

In [8]: id(a_list[0])
Out[8]: 4465792624

In [9]: a_list[0] = 30

In [10]: a_list
Out[10]: [30, 2, 3]
这就是为什么如果您做了这一微小的更改,您的代码将正常工作:

for i in somelist:
    for ind, j in enumerate(i):
        i[ind] = int(j)

在你的问题“但不起作用”中,没有充分解释什么“不起作用”。请解释一下当你执行代码时会发生什么,以及你期望的是什么。@Jean-François Fabre介意添加到副本列表中吗?这个函数处理的是输入是否是浮点。在你的问题“但不工作”中,它没有充分解释什么不工作。请解释一下当你执行代码时会发生什么,以及你期望的是什么。@Jean-François Fabre介意添加到副本列表中吗?这个函数处理的是输入是否是浮点。为什么不全速运行
map
:)
list(map(list,(map(int,x)表示somelist中的x))
为什么不全速运行
map
:)
list(map(list,(map(int,x)表示somelist中的x))