如果我在python中有一个列表,我想将这个列表划分为一些大小的子列表,然后生成大小为2的sub_lists的所有组合。
例如:
Input: List = ['1','2','3','4']
sub-list size s = 3我的产出应该是:
Sub-List-1 = ['1','2','3']
Combinations-1 = [('1','2'),('1','3'),('2','3')]
Sub-List-2 = ['2','3','4']
Combinations-2 = [('2','3'),('2','4'),('3','4')]我试过了,但没用:
combination_list = []
while (myList):
sub_list = []
sub_list.append(myList[:s])
myList = myList[s:]
combination_list.append(combinations(sub_list, 2))我的逻辑是:
但我没有得到预期的产出。能帮我个忙吗?
发布于 2016-10-15 00:51:59
result_list = []
combination_list = []
for i in range(len(myList)-s+1):
result_list.clear()
for j in range(i,i+s):
result_list.append(myList[j])
for i in combinations(result_list, 2):
combination_list.append((i[0],i[1]))我得到了上面的代码,如果您认为它可以改进,或者代码有问题,请告诉我
发布于 2016-10-15 00:33:04
你可以试试这个,希望能帮上忙
import itertools
mylist = ['1','2','3','4']
ls =[]
for i in range(0,int(len(mylist)/2)):
ls.append([mylist[i],mylist[i+1],mylist[i+2]])
print(len(ls)) /just getting the length to know how many sublist you have
sub1 = ls[0]
sub2 = ls[1]
comb1 =[]
comb2 =[]
//using itertools
comb1 = list(itertools.combinations(sub1,2))
comb2 = list(itertools.combinations(sub2,2))
print("combinations")
print(comb1)
print(comb2)//如果您想使用任何导入,那么可以使用for-循环来执行逻辑。
ncomb = []
for i in range(len(sub1)-1):
for a in range(i,len(sub1)-1):
ncomb.append((sub1[i],sub1[a+1]))
print(ncomb) // output the same [('1', '2'), ('1', '3'), ('2', '3')]//或更好地理解列表
lsize = len(sub1)
listcomp = [(sub1[x],sub1[y+1]) for x in range(lsize-1) for y in range(x,lsize-1)]
print(listcomp) // output the same [('1', '2'), ('1', '3'), ('2', '3')]组合 ('1','2'),('1','3'),('2','3')
https://stackoverflow.com/questions/40053411
复制相似问题