Ну, один из способов сделать это будет следующим:
from itertools import islice
lst = ['6403687.6403773','6404555.6404614','6413270.6413335']
# split at ".", flatten and remove both ends (slice)
flat = [num for pair in lst for num in pair.split('.')][1:-1]
# pair the entries in 2s and join them
res = ['.'.join(islice(flat, 2)) for _ in range(len(flat)//2) ]
, который выдает:
print(res) # -> ['6403773.6404555', '6403773.6404555']
В качестве альтернативы, если вам не нравится последний шаг с islice
(я тоже не большой поклонник), вы можете использовать рецепт grouper
itertool
:
def grouper(iterable, n, fillvalue=None):
"Collect data into fixed-length chunks or blocks"
# grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx"
args = [iter(iterable)] * n
return zip_longest(*args, fillvalue=fillvalue)
и делать вместо него
res = ['.'.join(group) for group in grouper(flat, 2)]
с такими же результатами, конечно.