You can use itertools.groupby
with a key that tests for membership in your number (converted to a string). This will group the elements based on whether they are in s
. The list comprehension will then join the groups as a string.
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']
Edit: the hard way
You can loop over the list and keep track of the last value seen. This will let you test if you need to append a new string to the list, or append the character to the last string. (Still itertools is much cleaner):
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']
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…