我试图通过循环嵌套列表来打印出这样的列表。
1: 1 1
2: 1 2, 2 1
3: 1 3, 2 2, 3 1
4: 1 4, 2 3, 3 2, 4 1
5: 2 4, 3 3, 4 2
依旧......
以下是我的尝试: 我已经循环每个列表,并能够打印出列表。我不知道如何以增加的顺序循环下一个列表,直到它结束。
val = [[1, [1,2,3,4]], [2, [1,2,3,4]], [3, [1,2,3,4]], [4, [1,2,3,4]]]
k = 0
for i in range(0,4):
k += 1
for j in range (0,4):
print(k,":", val[i][0],val[i][1][j])
k+= 1
1 : 1 1
2 : 1 2
3 : 1 3
4 : 1 4
6 : 2 1
7 : 2 2
8 : 2 3
9 : 2 4
11 : 3 1
12 : 3 2
13 : 3 3
14 : 3 4
16 : 4 1
17 : 4 2
18 : 4 3
19 : 4 4
答案 0 :(得分:2)
您在正确的路径上,除了打印您在第一组for循环中获得的值,而不是将它们存储在字典中,其中列表为值,两个值的总和为键。由于原始列表的顺序,我不需要对字典中的列表进行排序。
稍后在打印时,您将把值加在一起,这就是为什么我将它们格式化之前我将它们添加到列表中。该格式将为每行添加一个额外的逗号,这就是为什么我将[:-1]
添加到联接以删除它。
from collections import defaultdict
val = [[1, [1,2,3,4]], [2, [1,2,3,4]], [3, [1,2,3,4]], [4, [1,2,3,4]]]
d = defaultdict(list)
for i in range(0,4):
for j in range (0,4):
d[val[i][0]+val[i][1][j]].append('{} {},'.format(val[i][0],val[i][1][j]))
for x,i in enumerate(d):
#If it needs to be sorted just add sorted(d[i]) in place of d[i]
s = ' '.join(d[i])[:-1]
print('{}: {}'.format(x+1, s))
1: 1 1
2: 1 2, 2 1
3: 1 3, 2 2, 3 1
4: 1 4, 2 3, 3 2, 4 1
5: 2 4, 3 3, 4 2
6: 3 4, 4 3
7: 4 4