我有以下表格的列表:
names = [['123, jack',['jack johnson, jack richards, jack michaels']],['325, nick',['nick thompson, nick jacobs, nick smith']],....]
。
,每个通用名都有一个与之关联的ID,而该元素的子列表包含每个以通用名开头的全名。
我想更改包含全名的子列表的每个元素,并用管道替换逗号,以便给出以下形式的列表:
names = [['123, jack',['jack johnson| jack richards| jack michaels']],['325, nick',['nick thompson| nick jacobs| nick smith']],....]
。
是否有最佳方法来遍历列表并替换成这样?
答案 0 :(得分:3)
您可以使用嵌套列表推导,并将str.join
与str.split
结合使用以更改内部列表分隔符:
[i + ['| '.join(j)] for *i, j in names]
[['123, jack', 'jack johnson| jack richards| jack michaels'],
['325, nick', 'nick thompson| nick jacobs| nick smith']]
请注意,使用extended iterable unpacking可以在子列表之前使用任意数量的字符串。例如,使用另一个示例:
names = [['123, jack', 'MORE STRINGS', ['jack johnson', 'jack richards', 'jack michaels']],
['325, nick',['nick thompson', 'nick jacobs', 'nick smith']]]
[i + ['| '.join(j)] for *i, j in names]
[['123, jack', 'MORE STRINGS', 'jack johnson| jack richards| jack michaels'],
['325, nick', 'nick thompson| nick jacobs| nick smith']]