首页 > 编程语言 >python基于动态数量个列表求笛卡尔积

python基于动态数量个列表求笛卡尔积

时间:2023-10-27 20:44:24浏览次数:47  
标签:cartesian 笛卡尔 python list 列表 combinations listA listC listB

需求
有N个list,分别是listA,listB,listC。。。等等,N的数量不确定,现在对这些list的所有可能组合的值求笛卡尔积,比如 (listA,listB),(listA,listC),(listB,listC),(listA,listB,listC)。。。求这里每个组合的笛卡尔积。

分析
对实现以上需求,可分解为2个部分:
1.求所有list的组合
2.对所有list组合求笛卡尔积

以上2部在python中可通过 combinations 和 product 来实现。
由于list的数量不确定,所组成的list的组合数量不确定,因此需要用python的动态参数方式处理,即(*args)。

实现
将以上内容包装成一个函数实现,话不多说,直接上代码:

from itertools import product, combinations

def find_cartesian_product(*lists):
    all_combinations = []
    for i in range(2, len(lists)+1):
        all_combinations.extend(combinations(lists, i))
    
    cartesian_products = []
    for combination in all_combinations:
        cartesian_products.extend(product(*combination))
    
    return cartesian_products

# 示例用法
listA = [1, 2]
listB = ['a', 'b']
listC = ['x', 'y', 'z']

result = find_cartesian_product(listA, listB, listC)
print(result)

标签:cartesian,笛卡尔,python,list,列表,combinations,listA,listC,listB
From: https://www.cnblogs.com/ikzhaoyun/p/17793110.html

相关文章

  • 第 11 节 Python程序调试和异常处理技巧
    常见的错误语法错误:例如,不正确的缩进、未定义的变量、括号不匹配等。运行时错误:例如,尝试访问不存在的文件、内存溢出等。类型错误:例如,将字符串与整数相加等。逻辑错误:例如,程序没有按照预期的流程执行、条件判断不正确等。输入错误:例如,无效的输入、输入的数据类型不正确等。常见的......
  • python django项目安装虚拟环境
    开发环境搭建1.虚拟环境+库安装django(mac使用python3)python-mvenvmyvenvmyvenv\Scripts\activate.batpipinstallDjango 2.startproject项目创建python-mdjangostartprojectdjangosite 3.startapp应用程序创建cddjangosite(外面的djangosite)......
  • Python44days
    Python前端开发使用Python可以对网页进行编写,按照针对浏览器或web服务器访问的标准化协议超文本传输协议(HTTP)运行,接受来自用户的请求并返回页面,并且还可以实现与Web客户端的交互比如PC页面,手机页面,平板页面,屏幕展现出来都是前端内容后端是指负责处理数据和逻辑的一端,也就是服......
  • 手把手教你写Python爬虫
    Python爬虫是一个很常见的工具,它能够自动抓取网站数据,并将数据存储到本地或者其他地方。本文将教你如何使用Python编写爬虫,并详细介绍代码实现过程。准备工作在开始编写代码之前,我们需要安装几个必要的Python库,包括requests和beautifulsoup4。这两个库都可以使用pip命令......
  • Python实现短信循环压力测试教程
    一、安装依赖库在使用短信循环压力测试之前,需要先安装需要的依赖库——selenium和webdriver。其中,selenium是Python的一个第三方库,能够模拟浏览器的行为,进行自动化测试等操作。webdriver是浏览器的驱动程序,可以实现Python与浏览器之间的交互。pipinstallselenium安装完成后还需要......
  • Python 接口自动化 —— requests框架
    1.前言Python内置的urllib模块,也可以用于访问网络资源。但是,它用起来比较麻烦,而且,缺少很多实用的高级功能。因此我们使用requests模块进行进行接口测试。requests官方文档资料地址:http://cn.python-requests.org/zh_CN/latest/2.环境安装cmd(win+R快捷键)输入:pipinstall......
  • Python中的equals用法介绍
      一、使用场景在Python中,equals(等于)经常用于比较两个对象是否相等。在Python中,使用==可以判断两个对象的值是否相等,使用is可以判断两个变量是否引用同一个对象。但是对于不同类型的对象,使用==方法可能会出现意想不到的结果。因此,在使用==判断两个对象是否相等时,需要注意以......
  • Python:爬取某软件站数据报错requests.exceptions.SSLError: HTTPSConnectionPool(hos
    使用Python爬取某网站数据时候,之前一直是好好的。突然就报错:requests.exceptions.SSLError:HTTPSConnectionPool(host='api.***.cn',port=443):Maxretriesexceededwithurl:/accounty1/login?analysis............检查发现,可能是IP地址存在代理导致网络环境一场。可以检......
  • python 某音文件下载
    importtime#frompyqueryimportPyQueryaspqimportcommonMethodimportdatetimeimportrequestsimportreimportosimportjsonpattern_1='<sourceclass=""src="//v3-web.douyinvod.com/(.{486,488})type="">'......
  • Django和Vue.js是两种不同的框架,它们各自有自己的特点和用途¹。 **Django**¹: - Dja
    Django和Vue.js是两种不同的框架,它们各自有自己的特点和用途¹。**Django**¹:-Django是一个开放源代码的PythonWeb应用框架¹。-它采用了MTV(模型,视图,模板)的软件设计模式¹。-Django可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序¹。-Django还包含许多功能......