/ / python, biorąc pod uwagę 2 listy, zdejmij tę samą środkową część, a następnie dodaj spoczynkowe 2 listy - python, list

python, biorąc pod uwagę 2 listy, zdejmij tę samą środkową część, a następnie dodaj spoczynkowe 2 listy - python, list

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 № 1

Moż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