2016-04-28 36 views
3

有2列表:如何用列表中的多个元素替换列表中的一个元素?

list_a = [['apple', 'banana', 'strawberry'], ['meat'], ['milk'], ['meat']] 
list_b = [['chicken'], ['pork'], ['beef']] 

我怎样才能把list_b到list_a,而不是像这样的 '肉':

list_c = [['apple', 'banana', 'strawberry'], ['chicken'], ['pork'], 
['beef'], ['milk'], ['chicken'], ['pork'], ['beef']] 

回答

3

使用for循环AA和.extend()list方法:

for food in list_a: 
    if food == ['meat']: 
     list_c.extend(list_b) 
    else: 
     list_c.append(food) 

print (list_c) 

而且list_c会打印出:

[['apple', 'banana', 'strawberry'], ['chicken'], ['pork'], ['beef'], ['milk'], ['chicken'], ['pork'], ['beef']] 

这样你就可以将list_a['meat']的所有实例全部替换元素在list_b。这将产生你正在寻找的输出。

-1
list_a.extend(list_b) 
list_c = list_a 
list_c.remove('meat') 

这将增加list_b的项目结束list_a

1

Slice-assign。

>>> list_c = list_a[:] 
>>> list_c[-1:] = list_b[:] 
>>> list_c 
[['apple', 'banana', 'strawberry'], ['chicken'], ['pork'], ['beef']] 
0
list_a = [['apple', 'banana', 'strawberry'], ['meat'], ['milk']] 
list_b = [['chicken'], ['pork'], ['beef']] 

deletitem = ['meat'] 

def newlist(deletetemlist,list_a,list_b): 
    deletitemidx = list_a.index(deletetemlist) 
    print(list_a[:deletitemidx] + list_b + list_a[deletitemidx + 1:]) 

newlist(deletitem,list_a,list_b) 
+0

@AKS,谢谢并修改了它 – Backtrack

1
>>> idx = list_a.index(['meat']) 
>>> list_c = list_a[:idx] + list_b + list_a[idx + 1:] 
[['apple', 'banana', 'strawberry'], ['chicken'], ['pork'], ['beef'], ['milk']] 
1
def replace(index, L1, L2): 
    return L1[0:index] + L2 + L1[index+1:] 

只需使用slice

1

您最后一次更改..:

list_a = [['apple', 'banana', 'strawberry'], ['meat'], ['milk'], ['meat']] 
list_b = [['chicken'], ['pork'], ['beef']] 
list_c = [] 
for x in list_a: 
    if x == ["meat"]: 
     for y in list_b: 
      list_c.append(y) 
    else: 
     list_c.append(x) 

list_c 
[['apple', 'banana', 'strawberry'], ['chicken'], ['pork'], ['beef'], ['milk'], ['chicken'], ['pork'], ['beef']] 
相关问题