我想获得一些价值观;这对夫妇由i
和j
组成;它们之间的添加可以是N
或N+1
。我想要一个满足条件的数字列表。
例如,如果N = 3,那么我需要这样的输出:
>>> [ [1,2], [2,2] ]
到目前为止,我的代码是:
N = 3
answer = []
answer = [(i,j) for i in range (1,N) for j in range(1,N) if [i,j].sort() not in answer and i+j == N or i+j == N+1 ]
print(answer)
但是当我运行这个时,我收到了这个输出:
>>> [ [1,2] , [2,1], [2,2] ]
其中嵌套列表(couple)[2,1]是重复元素。为什么排序不能在这段代码中工作?
答案 0 :(得分:4)
inplace .sort()
方法是一个问题,但answer
是空列表,并且在列表推导中没有更新,直到它完成,所以可能你还必须使用定期循环,如果您不想检查元素是否已在answer
中,请使用集合:
answer = set()
values = set([N, N+1])
for i in range(1,N):
for j in range(1,N):
if i + j in values:
answer.add(tuple(sorted((i, j))))
answer
# {(1, 2), (2, 2)}