【问题标题】:Find count of triples in a list查找列表中的三元组数
【发布时间】:2017-05-29 00:53:52
【问题描述】:

我得到了一个列表,我要给出该列表中所有可能的三元组的计数,其中 (i

示例案例 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

【问题讨论】:

  • 到目前为止,我已经尝试过创建一个包含 3 个列表的图表,每个列表都有一条边,每个索引都是一个顶点
  • AFAICT,第一个输出应该是 0。没有 i 的元组。

标签: python algorithm list structure


【解决方案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))

【讨论】:

  • 有没有办法把它分解成更全面的代码块?很抱歉给您带来不便
  • @SergioChecoNuñez 查看更新 - 这是您的意思吗?
  • 是的!谢谢你。现在我注意到这在大多数情况下都很好用,但是对于第一种情况,它应该返回 1,但你的代码提供了一个空列表
  • @SergioChecoNuñez 第一种情况?顺便说一句,你的两个案例是相同的。
  • 哦,抱歉,好吧,我修复了它,我也看到如果没有元组返回 0,我忘了再添加一件事,但您的算法似乎做到了。
猜你喜欢
  • 1970-01-01
  • 2012-12-30
  • 2015-04-13
  • 1970-01-01
  • 2020-08-16
  • 2018-12-07
  • 2022-01-06
  • 1970-01-01
  • 2015-02-17
相关资源
最近更新 更多