W python, trzeba zdefiniować funkcję, która ma 2listy. Jeśli ostatnia część pierwszej listy jest taka sama jak pierwsza część drugiej listy, usuń tę samą część i dodaj razem spoczynkowe 2 listy. Jak na przykład:
Zdefiniowałem funkcję pomocniczą o nazwie prefiks, która pobiera 2 listy i zwraca wartość true, jeśli pierwsza lista jest prefiksem drugiej listy. W przeciwnym razie zwróć false.
Odpowiedzi:
1 dla odpowiedzi № 1Możesz spróbować:
def merge(seq1, seq2):
n1 = len(seq1)
for i in range(n1):
if seq1[i:] == seq2[:n1-i]:
return seq1 + seq2[n1-i:]
return seq1 + seq2
In [52]: merge(["a","a","a"],["g","g","g"])
Out[52]: ["a", "a", "a", "g", "g", "g"]
In [53]: merge(["a","t","t","a"],["t","t","a","a"])
Out[53]: ["a", "t", "t", "a", "a"]
In [54]: merge(["a","t","t","a"],["t","t","a","a"])
Out[54]: ["a", "t", "t", "a", "a"]
In [55]: merge(["a", "a", "a", "t", "t", "t", "t"], ["t", "t", "t", "t", "g", "g", "g", "g"])
Out[55]: ["a", "a", "a", "t", "t", "t", "t", "g", "g", "g", "g"]
Nie modyfikuje oryginalnych list, ale ciebiemoże to zrobić z łatwością, jeśli zajdzie taka potrzeba. (To nie jest droga, jeśli twoje listy są bardzo długie z krótkimi nakładkami, ponieważ sprawdza się od początku pierwszego).
0 dla odpowiedzi nr 2
def merge(L1, L2):
middle = []
while L1 and L2 and L1[-1] == L2[0]:
middle.append(L2[0])
L1 = L1[:-2]
L2 = L2[1:]
return L1 + middle + L2