我有以下列表:
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]],
.
.
]
答案 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