首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何找出蟒蛇中存在的等距三重态点

如何找出蟒蛇中存在的等距三重态点
EN

Stack Overflow用户
提问于 2022-09-15 14:07:36
回答 2查看 81关注 0票数 0

我正在解决一个基本的python问题,我的任务是找到所有的三重奏点,它们是等距的。例如

代码语言:javascript
运行
复制
points=[1,2,4,6,7,8]
res=[(1,4,7),(2,4,6),(4,6,8),(6,7,8)]

说明:

代码语言:javascript
运行
复制
(1,4,7)->  4-1 is equals to 7-4
(2,4,6)->  4-2 is equals to 6-4

以此类推。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-15 14:49:26

试着没有图书馆。首先,创建一个字典,其中键是列表中所有数字对之间的差异,而作为集合的对被放置在与键关联的列表中。在第二阶段,一个键列表中的所有收集到的对都会被检查是否有交集。如果找到公共元素,则将集合的联合输入到结果列表中。

代码语言:javascript
运行
复制
points = [1, 2, 4, 6, 7, 8]

d = {}
for n, i in enumerate(points):
    for j in points[n + 1:]:
        d.setdefault(abs(i - j), []).append({i, j})

out = []
for el in d.values():
    for n, i in enumerate(el):
        for j in el[n + 1:]:
            if i.intersection(j):
                out.append(i.union(j))
print(out)
代码语言:javascript
运行
复制
[{8, 6, 7}, {1, 4, 7}, {2, 4, 6}, {8, 4, 6}]
票数 1
EN

Stack Overflow用户

发布于 2022-09-15 14:12:41

试试这个:

代码语言:javascript
运行
复制
from itertools import combinations

res = []
for vals in combinations(points, 3):
    p1, p2, p3 = sorted(vals)
    if p2 - p1 == p3 - p2:
        res.append((p1, p2, p3))

结果如下:

代码语言:javascript
运行
复制
>>> res
[(1, 4, 7), (2, 4, 6), (4, 6, 8), (6, 7, 8)]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73732638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档