如何编写一个接受数字和 returns 三元组列表的函数 "triplets"?

How to write a function "triplets" that takes in a number and returns a list of triplets?

编写一个函数三元组,它接受一个数字 n 作为参数,returns 一个三元组列表,使得三元组的前两个元素之和等于使用 n 以下数字的第三个元素。请注意 (a, b, c) 和 (b, a, c) 代表相同的三元组。

三胞胎(5)

[(1, 1, 2), (1, 2, 3), (1, 3, 4), (2, 2, 4)]

你能试试这个吗?

def write_triplets(n):
    to_return = []

    if n >= 2:
        for i in range(2, n):
            for j in range(1, i/2+1):
                triplet = (j, i-j, i)
                to_return.append(triplet)

    return to_return


write_triplets(5) 

输出:

# Result: [(1, 1, 2), (1, 2, 3), (1, 3, 4), (2, 2, 4)] # 

你可以通过列表理解来做到这一点:

def triplets(n): 
    return [ (a,c-a,c) for c in range(2,n) for a in range(1,c//2+1) ]