使用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]
我就是无法适应这一点。有什么想法吗?提前致谢。
如果您担心要使用枚举创建的所有索引,而没有考虑所有索引,则可能会对切片分配有所了解。
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)
太谢谢了!我是这样做的:对于c in(list1,list2):对于b in c:b [:] = [“ X” + a对于a in b]
添加了一些有关如何在多个列表的函数中使用它的内容。