首页 > 解决方案 > 如何使用反向组合迭代拆分字符串?

问题描述

我有一个看起来像这样的字符串列表:

['C04.123.123.123', 'C03.456.456.456', 'C05.789.789.789']

我正在尝试拆分每个字符串,以便在句点分隔符上获得不同的向后拆分组合。基本上,如果我只以第一个字符串为例,我想得到:

['C04.123.123.123', 'C04.123.123', 'C04.123', 'C04']

我怎样才能做到这一点?我试过研究 itertools.combinations 和标准拆分功能,但没有运气。

标签: pythonlistsplitcombinations

解决方案


您可以使用列表推导:

d = ['C04.123.123.123', 'C03.456.456.456', 'C05.789.789.789']
new_d = [a+('.' if i else '')+'.'.join(i) for a, *c in map(".".split, d) 
     for i in [c[:h] for h in range(len(c)+1)][::-1]]

输出:

['C04.123.123.123', 'C04.123.123', 'C04.123', 'C04', 'C03.456.456.456', 'C03.456.456', 'C03.456', 'C03', 'C05.789.789.789', 'C05.789.789', 'C05.789', 'C05']

推荐阅读