繁体   English   中英

将 Python 中列表的列表中的所有元素转换为字符串

[英]Converting all elements to strings in a list of list in Python

我有一个列表列表,其中包含整数和字符串作为它们的值。 现在我想将所有值转换为字符串。

我的列表列表如下所示:(比如final_rule

[[3, '*', 1, 4, 1], [1, 2, '*', 2, 1], ['*', '*', 3, 4, 1], [2, 2, '*', 2, 1]]

我正在尝试生成一个 output 作为:

[['3', '*', '1', '4', '1'], ['1', '2', '*', '2', '1'], ['*', '*', '3', '4', '1'], ['2', '2', '*', '2', '1']]

我正在尝试以下代码:

new_list=[]
for list_ in final_rule:
    #print("list_:",list_)
    [str(i) for i in list_]
    new_list.append(i)
return new_list
int_list = [[3, '*', 1, 4, 1], [1, 2, '*', 2, 1], ['*', '*', 3, 4, 1], [2, 2, '*', 2, 1]]

# you can use nested loop like following.
str_list = [[str(i) for i in j] for j in int_list]

output

[['3', '*', '1', '4', '1'],
 ['1', '2', '*', '2', '1'],
 ['*', '*', '3', '4', '1'],
 ['2', '2', '*', '2', '1']]

你很接近,理解很好,但它不会就地修改列表。 它创建了一个新的。 所以你需要append新列表:

def stringify(final_rule):
    new_list=[]
    for list_ in final_rule:
        #print("list_:",list_)
        strings = [str(i) for i in list_]
        new_list.append(strings)
    return new_list

但是你可以通过一个单一的理解来实现同样的目标:

def stringify(final_value):
    return [[str(i) for i in inner] for inner in final_value]

或者,内部列表可以用list(map(str, inner))构造,但我不确定什么会更快。

lst = [[3, '*', 1, 4, 1], [1, 2, '*', 2, 1], ['*', '*', 3, 4, 1], [2, 2, '*', 2, 1]]

list(list(map(str, terms)) for terms in lst)

这是使用 map() 和列表理解的一种方法。

a = [[3, '*', 1, 4, 1], [1, 2, '*', 2, 1], ['*', '*', 3, 4, 1], [2, 2, '*', 2, 1]]
result = [list(map(str,x)) for x in a]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM