2016-04-28 37 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']] 
相關問題