首页 > 编程语言 >【Python】笛卡尔积 intertools.product()

【Python】笛卡尔积 intertools.product()

时间:2024-08-05 18:53:20浏览次数:15  
标签:product cartesian Python list 列表 字符串 print intertools

一、题目

This tool computes the cartesian product of input iterables.

It is equivalent to nested for-loops.

For example, product(A, B) returns the same as ((x,y) for x in A fro y in B).

Sample Code

from itertools import product

print(list(product([1,2,3], repeat=2)))

print(list(product([1,2,3],[3,4])))

A = [[1,2,3],[3,4,5]]
print(list(product(*A))

B = [[1,2,3],[3,4,5],[7,8]]
print(list(product(*B)))

>>> [(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)]
>>> [(1, 3), (1, 4), (2, 3), (2, 4), (3, 3), (3, 4)]
>>> [(1, 3), (1, 4), (2, 3), (2, 4), (3, 3), (3, 4)]
>>> [(1, 3, 7), (1, 3, 8), (1, 4, 7), (1, 4, 8), (1, 5, 7), (1, 5, 8), (2, 3, 7), (2, 3, 8), (2, 4, 7), (2, 4, 8), (2, 5, 7), (2, 5, 8), (3, 3, 7), (3, 3, 8), (3, 4, 7), (3, 4, 8), (3, 5, 7), (3, 5, 8)]

二、代码

from itertools import product
print("Please enter the elements of list A, separated by spaces:")
A = list(map(int, input().split()))
print("Please enter the elements of list B, separated by spaces:")
B = list(map(int, input().split()))

cartesian_product = list(product(A, B))
output = ' '.join([f'({a}, {b})' for a, b in cartesian_product])
print(output)
print(*cartesian_product)

输入:

Please enter the elements of list A, separated by spaces:
1 2
Please enter the elements of list B, separated by spaces:
3 4

输出:

(1, 3) (1, 4) (2, 3) (2, 4)
(1, 3) (1, 4) (2, 3) (2, 4)

三、解读

题目要求计算两个列表 A 和 B 的笛卡尔积,并以特定的格式打印结果。

from itertools import product
  • 从 Python 标准库中的 itertools 模块导入 product 函数。
  • product 函数用于计算输入的可迭代对象的笛卡尔积。
print("Please enter the element of list A, separated by spaces:")
A = list(map(int, input().split()))
print("Please enter the element of list B, separated by spaces:")
B = list(map(int, input().split()))
  • 用 input() 函数读取用户输入的字符串。
  • 用 split() 方法将输入的字符串按空格分割成多个子字符串。
  • 用 map() 函数将分割后的字符串列表转换为整数列表。int 是 map() 函数的参数,表示将每个字符串转换为整数。
  • 将 map 对象转换为列表,并将其存储在变量 A / B 中。
cartesian_product = list(product(A, B))
output = ' '.join([f'({a}, {b})' for a, b in cartesian_product])
print(output)
  • 用 product(A, B) 计算列表 A 和 B 的笛卡尔积。将生成所有可能的有序对 (a, b) ,其中 a 来自列表A ,b来自列表B。
  • 将 product 函数返回的迭代器转换为列表,并存储在变量 cartesian_product 中。
  • 用列表推导式和字符串格式来创建一个包含格式化后的笛卡尔积元组的字符串列表。
  • 列表推导式遍历 cartesian_product 中的每个元组(a, b),使用 f'({a}, {b})' 格式化每个元组为字符串形式。
  • 使用 ' '.join() 方法将这些字符串连接成一个单一的字符串,元素之间用空格分隔。
print(*cartesian_product)
  • 使用星号操作符 * 将 cartesian_product 列表解包,并将每个元组作为独立的参数传递给 print 函数。
  • 这将打印出 cartesian_product 中的每个元组。

 

标签:product,cartesian,Python,list,列表,字符串,print,intertools
From: https://blog.csdn.net/u010528690/article/details/140929416

相关文章

  • 【Python】Python中的输入与输出——内附Leetcode【151.反转字符串中的单词】的C语言
    输入与输出导读一、Python中的输出1.1基本用法1.2格式化输出1.3通过`:`格式化值的输出1.4其它格式化输出二、Python中的输入2.1基本用法2.2`split()`方法2.3split()习题演练结语导读大家好,很高兴又和大家见面啦!!!在上一篇内容中我们介绍了Python中的数据类......
  • Python 和 Boto3 批量管理 AWS CloudWatch 警报
    在管理AWS基础设施时,CloudWatch警报是一个重要的组成部分,它们帮助我们监控资源并在需要时触发操作。然而,在某些情况下,我们可能需要批量禁用或启用这些警报。本文将介绍如何使用Python和Boto3库来实现这一目标。背景在维护或大规模更新期间,可能需要临时禁用所有CloudW......
  • 【Python&RS】基于矢量点读取遥感影像波段值&制作训练样本
    ​    在进行遥感定量反演或数据分析时,往往我们都具有矢量的真值,可能是点文件也可能是面文件,最重要的还是通过这个矢量获取影像中该区域的值,这样方便做波段分析以及后续的反演等流程。今天给大家分享一下如何通过点文件获取影像的波段值。原创作者:RS迷途小书童博客......
  • 计算机毕业设计必看必学!! 85583 springboot高校网上选课系统,原创定制程序, java、PHP
                                                  摘要本论文主要论述了如何使用JAVA语言开发一个高校网上选课系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,......
  • Python异常处理机制
    编程错误编写程序时遇到的错误可大致分为2类,分别为语法错误和运行时错误。语法错误语法错误,也就是解析代码时出现的错误。当代码不符合Python语法规则时,Python解释器在解析时就会报出SyntaxError语法错误,与此同时还会明确指出最早探测到错误的语句。例如:print"Hello,World!......
  • Python函数
    函数定义函数需要用def关键字实现,具体的语法格式如下:def函数名(形参列表)://由零条到多条可执行语句组成的代码块[return[返回值]]其中,用[]括起来的为可选择部分,即可以使用,也可以省略。此格式中,各部分参数的含义如下:函数名:从语法角度来看,函数名只要是一个合法......
  • 16.python索引和切片
    (一)索引定义:索引也叫下标或角标作用:可以直接使用索引来访问序列中的元素,索引分为两种:正向索引和负向索引正向索引:从索引0开始负向索引:从-1开始(二)切片1、定义:切片象截是指对操作的截取其中一部分的操作,字符串,列表,元组都支持切片操作2、切片的语法:【开始索引:结束索引:步长】......
  • Python面向对象课程设计
    面向对象程序设计面向对象编程(Object-orientedProgramming,简称OOP),是一种封装代码的方法。面向对象中,常用术语包括:类:可以理解是一个模板,通过它可以创建出无数个具体实例。比如,前面编写的tortoise表示的只是乌龟这个物种,通过它可以创建出无数个实例来代表各种不同特征的乌龟(......
  • 【数值计算方法】2&3维高斯积分的python实现
    目录二维高斯积分三维高斯积分验证本文只给出pythont实现和例题,数学推导见【数值计算方法】数值积分&微分-python实现-FE-有限元鹰-博客园二维高斯积分python实现二维高斯积分:defInteg2dGuassLegendre(f,lowLimit:List[float]=[-1,-1],......
  • Python选择与循环
    条件语句Python中,选择(条件)语句可细分为3种形式,分别是if语句、ifelse语句和ifelifelse语句。标准格式:if表达式1:代码块1elif表达式2:代码块2elif表达式3:代码块3...//可以有零条或多条elif语句else:代码块n表达式可以是一个单纯的布尔值......