给定一个类似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']]