Python:如何更改列表中每个子列表中每个元素的数据类型.在这种情况下:int到str



给定一个类似list1=[[1,2,3],[4,5,6]]的列表,为了返回[['1','2','3'],['4','5','6']],我尝试了这个:

for i in list1:
for j in i:
j = str(j)
list1

它对列表没有任何作用:它输出的list1保持不变。我认为它可以通过重新分配来工作,比如循环中的[0][0]=str(a[0][0]((这确实有效(。当然,上面的for循环不能做到这一点。

也尝试过";map";,如

for i in list1:
for j in i:
list(map(str,i)

这也绝对没有什么可列举的。

我正在尝试更改原始列表,这应该是可能的。也许会有一份新的名单,但我几乎可以肯定这是没有必要的。

有人能帮忙吗?非常感谢。

您可以尝试列表理解

[[str(j) for j in i] for i in list1]
# or
# [list(map(str,i)) for i in list1]
[['1', '2', '3'], ['4', '5', '6']]

使用嵌套列表压缩

list1 = [[1,2,3],[4,5,6]]
[[str(x) for x in y] for y in list1]

将返回

[['1', '2', '3'], ['4', '5', '6']]

是的,您可以像这样使用映射函数:

def convert(x=[]):
return [str(i) for i in x]
>>list(map(convert,x))
[['1', '2', '3'], ['4', '5', '6']]

请检查Python中的可变/不可变对象

for i in list1:    # i is a list(mutable)
for j in i:    # j is an int(immutable) 
j = str(j) # j reference to new string object

int是不可变的(创建后不允许更改(,因此这行

j = str(j)

创建了一个由j引用的新字符串对象,并且列表i中的对象保持不变。

list、dict、set、byte数组都是可变对象

更改列表中的对象值可以这样做:

for i in list1:              # i is a list(mutable)
for j in range(len(i)):  # this time, j is index of list i 
i[j] = str(i[j])     # change the list values

结果,

list1
[['1', '2', '3'], ['4', '5', '6']]

相关内容

最新更新