欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python2.7基于笛卡爾積算法實(shí)現(xiàn)N個(gè)數(shù)組的排列組合運(yùn)算示例

 更新時(shí)間:2017年11月23日 12:06:04   作者:斜陽漸矮只影長  
這篇文章主要介紹了Python2.7基于笛卡爾積算法實(shí)現(xiàn)N個(gè)數(shù)組的排列組合運(yùn)算,涉及Python笛卡爾積算法及排列組合操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下

本文實(shí)例講述了Python2.7基于笛卡爾積算法實(shí)現(xiàn)N個(gè)數(shù)組的排列組合運(yùn)算。分享給大家供大家參考,具體如下:

說明:本人前段時(shí)間遇到的求n個(gè)數(shù)組的所有排列組合的問題,發(fā)現(xiàn)笛卡爾積算法可以解決,但是網(wǎng)上搜索的只有Java版本的實(shí)現(xiàn),于是自己試著用python實(shí)現(xiàn),由于新手代碼不太規(guī)范。

代碼:本人封裝了一個(gè)類Cartesian(笛卡爾),其中封裝了變量和方法:

1.變量

datagroup : 表示n個(gè)list(python 中的list與其他編程中的數(shù)組定義類似)的集合,即一個(gè)二維數(shù)組
counterIndex:datagroup反向下標(biāo)值
counter : 用來記錄當(dāng)前datagroup中每一個(gè)數(shù)組輸出的下標(biāo),初始全為0,因?yàn)閺牡谝粋€(gè)開始輸出

2.方法

countlength : 計(jì)算數(shù)組長度,即計(jì)算n的具體值
handle :處理datagoroup二維數(shù)組中每一個(gè)一維數(shù)組輸出的下標(biāo)值
assemble : 對datagoroup中的n個(gè)一維數(shù)組中的每一元素進(jìn)行排列組合輸出

# -*- coding:utf-8 -*-
# python 實(shí)現(xiàn)N個(gè)數(shù)組的排列組合(笛卡爾積算法)
class Cartesian():
  # 初始化
  def __init__(self, datagroup):
    self.datagroup = datagroup
    # 二維數(shù)組從后往前下標(biāo)值
    self.counterIndex = len(datagroup)-1
    # 每次輸出數(shù)組數(shù)值的下標(biāo)值數(shù)組(初始化為0)
    self.counter = [0 for i in range(0, len(self.datagroup))]
  # 計(jì)算數(shù)組長度
  def countlength(self):
    i = 0
    length = 1
    while(i < len(self.datagroup)):
      length *= len(self.datagroup[i])
      i += 1
    return length
  # 遞歸處理輸出下標(biāo)
  def handle(self):
    # 定位輸出下標(biāo)數(shù)組開始從最后一位遞增
    self.counter[self.counterIndex]+=1
    # 判斷定位數(shù)組最后一位是否超過長度,超過長度,第一次最后一位已遍歷結(jié)束
    if self.counter[self.counterIndex] >= len(self.datagroup[self.counterIndex]):
      # 重置末位下標(biāo)
      self.counter[self.counterIndex] = 0
      # 標(biāo)記counter中前一位
      self.counterIndex -= 1
      # 當(dāng)標(biāo)記位大于等于0,遞歸調(diào)用
      if self.counterIndex >= 0:
        self.handle()
      # 重置標(biāo)記
      self.counterIndex = len(self.datagroup)-1
  # 排列組合輸出
  def assemble(self):
    length = self.countlength()
    i = 0
    while(i < length):
      attrlist = []
      j = 0
      while(j<len(self.datagroup)):
        attrlist.append(self.datagroup[j][self.counter[j]])
        j += 1
      print attrlist
      self.handle()
      i += 1

測試:

注:測試代碼中我只選取了長度為3的二維數(shù)組

if __name__ == "__main__":
  # 構(gòu)造二維數(shù)組
  datagroup = [['aa1', ], ['bb1', 'bb2'], ['cc1', 'cc2', 'cc3']]
  # 創(chuàng)建cartesian對象
  cartesian = Cartesian(datagroup)
  cartesian.assemble()

輸出結(jié)果:

備注:此算法實(shí)現(xiàn)用python2.7版本

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python加密解密算法與技巧總結(jié)》、《Python編碼操作技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程

希望本文所述對大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Pyecharts中的餅圖位置調(diào)整方式

    Pyecharts中的餅圖位置調(diào)整方式

    這篇文章主要介紹了Pyecharts 餅圖位置調(diào)整方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • OpenCV利用python來實(shí)現(xiàn)圖像的直方圖均衡化

    OpenCV利用python來實(shí)現(xiàn)圖像的直方圖均衡化

    這篇文章主要介紹了OpenCV利用python來實(shí)現(xiàn)圖像的直方圖均衡化,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Python讀取多列數(shù)據(jù)以及用matplotlib制作圖表方法實(shí)例

    Python讀取多列數(shù)據(jù)以及用matplotlib制作圖表方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于Python讀取多列數(shù)據(jù)以及用matplotlib制作圖表的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Python tkinter如何設(shè)置背景顏色

    Python tkinter如何設(shè)置背景顏色

    本文主要介紹了Python的tkinter庫中設(shè)置組件背景顏色的方法,主要通過使用bg選項(xiàng)和config方法來實(shí)現(xiàn),包括設(shè)置單個(gè)組件、窗口、按鈕、文本框以及整個(gè)應(yīng)用的背景顏色,同時(shí)也可以使用十六進(jìn)制顏色代碼進(jìn)行更精確的顏色控制
    2024-09-09
  • 詳解Python之可迭代對象,迭代器和生成器

    詳解Python之可迭代對象,迭代器和生成器

    這篇文章主要為大家介紹了Python之可迭代對象,迭代器和生成器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • Keras官方中文文檔:性能評估Metrices詳解

    Keras官方中文文檔:性能評估Metrices詳解

    這篇文章主要介紹了Keras官方中文文檔:性能評估Metrices詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python實(shí)現(xiàn)讀取Linux系統(tǒng)的CPU以及內(nèi)存占用

    Python實(shí)現(xiàn)讀取Linux系統(tǒng)的CPU以及內(nèi)存占用

    這篇文章主要為大家詳細(xì)介紹了如何利用Python語言實(shí)現(xiàn)Linux系統(tǒng)的CPU以及內(nèi)存占用,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,需要的可以收藏一下
    2023-05-05
  • 結(jié)合OpenCV與TensorFlow進(jìn)行人臉識別的實(shí)現(xiàn)

    結(jié)合OpenCV與TensorFlow進(jìn)行人臉識別的實(shí)現(xiàn)

    這篇文章主要介紹了結(jié)合OpenCV與TensorFlow進(jìn)行人臉識別的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Linux安裝Pytorch1.8GPU(CUDA11.1)的實(shí)現(xiàn)

    Linux安裝Pytorch1.8GPU(CUDA11.1)的實(shí)現(xiàn)

    這篇文章主要介紹了Linux安裝Pytorch1.8GPU(CUDA11.1)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • PyQT5之使用QT?Designer創(chuàng)建基本窗口方式

    PyQT5之使用QT?Designer創(chuàng)建基本窗口方式

    這篇文章主要介紹了PyQT5之使用QT?Designer創(chuàng)建基本窗口方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02

最新評論