在列表中查找三元组的数量

时间:2016-10-26 16:42:01

标签: python algorithm list structure

我给出了一个列表,我要计算该列表中所有可能的三元组,其中(i< j< k)和i分为j,j分为k,例如( 1,2,4),并且它应该在给定列表的长度在2和2000之间的情况下工作,并且列表中的元素在1和999999之间(包括1和999999)。如果没有找到元组,则返回0。

示例案例1:

input: L = [1,1,1]
# code should find: Only one tuple found
output: 1

示例案例2:

input: L = [1,2,3,4,5,6] 
# code should find: triples are (1,2,4) , (1,2,6), and (1,3,6)
output: 3

1 个答案:

答案 0 :(得分:1)

你可以用这样的列表理解来做到这一点:

>>> [(i, j, k) for i in L for j in L for k in L if k > j > i and j % i == 0 and k % j == 0]
[(1, 2, 4), (1, 2, 6), (1, 3, 6)]

修改

这是一个更长的版本:

tups = []
for i in L: 
    for j in L: 
        for k in L:
            if k > j > i and j % i == 0 and k % j == 0:
                tups.append((i, j, k))