我给出了一个列表,我要计算该列表中所有可能的三元组,其中(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
答案 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))