首页 > 编程问答 >仅产生 2D 笛卡尔积的上三角形

仅产生 2D 笛卡尔积的上三角形

时间:2024-07-22 04:31:00浏览次数:9  
标签:python cartesian-product

我知道如何使用 itertools.product

In [19]: from itertools import product
    ...: 
    ...: abcd = product('abcd', 'abcd')
    ...: for i in range(4):
    ...:     print(' '.join(repr(t) for _, t in zip(range(4), abcd)))
    ...: 
('a', 'a') ('a', 'b') ('a', 'c') ('a', 'd')
('b', 'a') ('b', 'b') ('b', 'c') ('b', 'd')
('c', 'a') ('c', 'b') ('c', 'c') ('c', 'd')
('d', 'a') ('d', 'b') ('d', 'c') ('d', 'd')

In [20]: 

进行 2D 笛卡尔积,但我只对上三角形感兴趣:

           ('a', 'b') ('a', 'c') ('a', 'd')
                      ('b', 'c') ('b', 'd')
                                 ('c', 'd')

是否有一种有效的方法来生成仅生成上三角形的生成器?


def cart_tri(a):
    """为 a 中的项目生成 2D 笛卡尔积的上三角形。

    Args:
        a: 用于笛卡尔积的可迭代对象。

    Yields:
        a 的笛卡尔积的上三角形中的项目元组。
    """
    for i in range(len(a)):
        for j in range(i + 1, len(a)):
            yield a[i], a[j]


for pair in cart_tri('abcd'):
    print(pair)

说明:

  • 该函数使用双循环迭代可迭代 a 中的项目的索引。
  • 外循环遍历 i 从 0 到 a 的长度减 1。
  • 内循环遍历 j i + 1 a 的长度减 1。这确保我们仅生成对,其中第一个元素的索引小于第二个元素的索引,从而生成上三角形。
  • 对于每个 i j 对,该函数将项目在索引 i j 处的元组 (a[i], a[j]) 生成。

此方法有效,因为它仅生成所需的元组,而无需生成和过滤整个笛卡尔积。

标签:python,cartesian-product
From: 78776293

相关文章

  • 尝试在cmd(python)中安装turtle
    当我在cmd中编写pipinstallturtle后,这条消息出现在我面前。有人知道该怎么办吗?C:\>pipinstallturtleCollectingturtleUsingcachedturtle-0.0.2.tar.gz(11kB)ERROR:Commanderroredoutwithexitstatus1:command:'C:\Users\Bruger\App......
  • Python + Polars:如何有效地“fill_null”仅 DataFrame 的某些列?
    例如,假设我只想fill_null(strategy="zero")DataFrame的数字列。我当前的策略是这样做:final_df=df.select(cs.exclude(cs.numeric()))final_df.with_columns(df.select(cs.numeric()).fill_null(strategy="zero"))是否有替代的、更惯用或更有效的方法来实现我......
  • 如何找到 Windows 上 Python 的安装位置?
    我想找出我的Python在Windows上的安装路径。例如:C:\Python25如何找到Python的安装位置?在Windows上查找Python安装位置的方法有很多种:1.使用where命令(推荐方法):打开命令提示符(cmd)。输入以下命令并按回车键:wherepython......
  • Python Pandas:如何解析没有行结尾的 CSV
    如何解析没有行结尾的CSV文件?示例数据sep=;Id;Date;1;1980-02-29;2;1980-03-10;3;;可以使用lineterminator参数指定行终止符来解析没有行尾的CSV文件。在这种情况下,你可以将lineterminator设置为一个空字符串('')。以下是使用......
  • Python 中的 azure.ai.translation.document - 无法使用当前权限访问源文档位置
    我在使用Python中的azure.ai.translation.document库时遇到问题。我已经在Azure中设置了翻译服务以及带有两个容器的Blob存储。我已使用“用户委托密钥”创建了SAS连接。一种用于源(读取/列表),一种用于目标(写入/列表)。例如我尝试运行Python程序,但源b......
  • 博文标题:探索Python中的元编程:装饰器的魔法
    引言在Python的世界里,装饰器(Decorators)是一种非常强大的特性,它允许程序员在不修改原始函数代码的情况下,为函数添加新的功能。这种机制不仅增强了代码的可读性和可维护性,还提供了高度的灵活性和扩展性。本文将深入探讨装饰器的基本概念、工作原理以及如何利用它们来简化和......
  • 使用Python 和 Selenium 抓取 酷狗 音乐专辑 附源码
    在这篇博客中,我将分享如何使用Python和Selenium抓取酷狗音乐网站上的歌曲信息。我们将使用BeautifulSoup解析HTML内容,并提取歌曲和专辑信息。准备工作首先,我们需要安装一些必要的库:pipinstallrequestsbeautifulsoup4selenium代码实现以下是完整的代码:importosi......
  • 基于Django+Python的网易新闻与评论舆情热点分析平台
    一、引言在信息爆炸的时代,人们每天面对海量的信息流,如何从中筛选出有价值的信息并进行深度分析变得尤为重要。基于Django+Python的网易新闻与评论舆情热点分析平台,旨在为用户提供一个高效的数据分析工具,帮助用户快速理解新闻趋势、情感倾向以及公众对特定事件的看法。通过自......
  • Python解释器详解及其应用场景
    Python解释器及其应用场景一、Python解释器概述Python解释器是Python程序运行的核心,它负责读取Python代码(即.py文件)并将其转换为机器语言,从而使计算机能够执行。简单来说,Python解释器就像是Python代码与计算机之间的翻译官,把Python代码翻译成计算机能懂的语言。Python解释器......
  • 利用【MATLAB】和【Python】进行【图与网络模型】的高级应用与分析】
    目录一、图与网络的基本概念1.无向图与有向图2.简单图、完全图、赋权图3.顶点的度4.子图与连通性5.图的矩阵表示MATLAB代码实例Python代码实例 二、最短路径问题1.最短路径问题的定义2.Dijkstra算法MATLAB代码实例Python代码实例三、最小生成树问题1.......