问下大佬关于itertools列出列表中所有元素的所有排列组合的问题
python吧
全部回复
仅看楼主
level 3
from itertools import combinations
def combine(temp_list, n):
'''根据n获得列表中的所有可能组合(n个元素为一组)'''
temp_list2 = []
for c in combinations(temp_list, n):
temp_list2.append(c)
return temp_list2
list1 = ['a', 'b', 'c','d' ]
end_list = []
for i in range(len(list1)):
if i>1:
end_list.extend(combine(list1, i))
last_list=[]
for k in end_list:
last_list.append(''.join(k))
print(last_list)
打印出来 的结果是:
['ab', 'ac', 'ad', 'bc', 'bd', 'cd', 'abc', 'abd', 'acd', 'bcd']
其中没有‘ba','ca','cb'等,也就是说貌似combinations方法去掉了字符相同但顺序不一样的,如果想要字符元素相同但顺序不一样的也加进这个列表中,应该如何改代码?
2021年01月07日 19点01分 1
level 3
2021年01月07日 19点01分 2
level 11
[汗]有顺序的那个叫排列,permutations
2021年01月07日 20点01分 3
是的,后来知道了,这个工具有好几种方法,包括笛卡尔积什么的,用permutations就会将同名但顺序不同的也放进list了,谢谢
2021年01月13日 10点01分
1