Вы можете использовать itertools.groupby
с ключом, который проверяет членство в вашем номере (преобразуется в строку). Это сгруппирует элементы в зависимости от того, находятся ли они в s
. Понимание списка затем объединит группы в виде строки.
from itertools import groupby
A=['1','2','3','4','5','6','7']
s=25
# make it a string so it's easier to test for membership
s = str(s)
["".join(v) for k,v in groupby(A, key=lambda c: c in s)]
# ['1', '2', '34', '5', '67']
Редактировать: трудный путь
Вы можете l oop по списку и отслеживать из последнего увиденного значения. Это позволит вам проверить, нужно ли вам добавить новую строку в список или добавить символ к последней строке. (Все же itertools намного чище):
A=['1','2','3','4','5','6','7']
s=25
# make it a string
s = str(s)
output = []
last = None
for c in A:
if last is None:
output.append(c)
elif (last in s) == (c in s):
output[-1] = output[-1] + c
else:
output.append(c)
last = c
output # ['1', '2', '34', '5', '67']