Python:动态分割带有数字的文本

时间:2016-01-08 19:14:44

标签: python list split

我有以下列表:

listEx = ['123','456','342','432']

如何才能采用不同的数字汇编?例如,对于列表123的第一项,汇编应为:[1,2,3][1,23][12,3][123]

可以使用以下方法完成第一次补充:

[int(listEx[0][0]),int(listEx[0][1]),int(listEx[0][2])]
[int(listEx[0][0]),int(listEx[0][1:])]
                  .
                  .
                  .

有更优雅和动态的方式吗? 更具体地说,我如何创建以下内容:

[[[1,2,3],[4,5,6],[3,4,2],[4,3,2]],
  [[1,23],[4,56],[3,42],[4,32]],
             .
             .
 ]

2 个答案:

答案 0 :(得分:2)

您可以使用列表推导来遍历列表,可以使用索引来拆分字符串并将逗号插入字符串然后添加切片。要插入两个逗号,您可以使用str.join()方法:

>>> [[','.join(i)]+[str(i[:x]+','+i[x:]).strip(',') for x in range(3)] for i in listEx]
[['1,2,3', '123', '1,23', '12,3'], ['4,5,6', '456', '4,56', '45,6'], ['3,4,2', '342', '3,42', '34,2'], ['4,3,2', '432', '4,32', '43,2']]

答案 1 :(得分:0)

如果您想按照指定的顺序输出输出,请尝试此操作。

listEx = ['123','456','342','432']
combinations = list()
for i in listEx:
    itr_list = list()
    itr_list.append(','.join(i))
    for x in range(1,len(i)):
            itr_list.append(','.join([i[:x],i[x:]]))
    itr_list.append(i)
    combinations.append(itr_list)
output = list()
for i in range(len(combinations)):
    itr_list = list()
    for j in range(len(combinations[i])):
        itr_list.append(combinations[j][i])
    output.append([itr_list])
print output