温馨提示:本文翻译自stackoverflow.com,查看原文请点击:string - Join text to several multi-level lists in Python

string - 将文本加入Python中的多个多级列表

发布于 2020-03-27 10:17:08

使用Python,我有一堆列表想要加入一些文本。这些列表具有多级条目(或用于描述它的任何术语),如下所示:

list1:
   (['abc'],
    ['def', 'ghi'])
list2:
   (['123'],
    ['456', '789'])

我想将字符串“ X”加入两个列表的每个元素:

list1:
   (['Xabc'],
    ['Xdef', 'Xghi'])
list2:
   (['X123'],
    ['X456', 'X789'])

我只是做不到整齐我做了一些“ for循环”,但考虑到我有几个列表,它看起来非常差,并且不可重现:

for index, item in enumerate(list1):
    for index2, item2 in enumerate(item):
        list1[index][index2] = "X" + item2

for index, item in enumerate(list2):
    for index2, item2 in enumerate(item):
        list2[index][index2] = "X" + item2

我知道这应该是一个班轮。我为单个简单列表找到了一些答案,但是我包含的答案包含多级(多元素?),并且列表不止一个:

list = ["X" + string for string in list]

我就是无法适应这一点。有什么想法吗?提前致谢。

查看更多

查看更多

提问者
spcvalente
被浏览
69
FredMan 2019-07-03 21:47

如果您担心要使用枚举创建的所有索引,而没有考虑所有索引,则可能会对切片分配有所了解。

for b in list1 :
    b[:]= ["X"+a for a in b]

尽管从技术上讲,这并没有进行适当的分配(它为列表理解创建了一个列表),但是它将直接有效地更新list1,并且不需要您再分配list1 = [列表理解]

如果要实际提供各个参数,则可以使用star将变量打包到列表中。

def update_lists(prepend_text, *lists) :
    for list in lists :
        update_list(prepend_text, list)

def update_list(prepend_text, list) :
    for b in list :
        b[:]= [prepend_text+a for a in b] 
update_lists("X", list1,list2)

另外,您可以定义如下函数:

def update_lists(prepend_text, lists) :
    for list in lists :
        update_list(prepend_text, list)

然后将函数调用为

update_lists("X", [list1,list2])

也许更好,如果您动态创建列表列表

lists = []
lists.append(list1)
lists.append(list2)
update_lists("X", lists)

发布
问题

分享
好友

手机
浏览

扫码手机浏览