最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python全排列操作實(shí)例分析

 更新時(shí)間:2018年07月24日 14:58:56   作者:wanlifeipeng  
這篇文章主要介紹了Python全排列操作,結(jié)合實(shí)例形式分析了Python列表、字符串全排列算法,以及使用標(biāo)準(zhǔn)庫(kù)itertools進(jìn)行全排列的相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Python全排列操作。分享給大家供大家參考,具體如下:

step 1: 列表的全排列:

這個(gè)版本比較low

# -*-coding:utf-8 -*-
#!python3
def permutation(li,index):
  for i in range(index,len(li)):
    if index == len(li)-1:
      print(li)
      return
    tmp = li[index]
    li[index] = li[i]
    li[i] = tmp
    permutation(li,index+1)
    tmp = li[index]
    li[index] = li[i]
    li[i] = tmp

調(diào)用:

permutation([1,2,3,4],0)

運(yùn)行結(jié)果:

[1, 2, 3, 4]
[1, 2, 4, 3]
[1, 3, 2, 4]
[1, 3, 4, 2]
[1, 4, 3, 2]
[1, 4, 2, 3]
[2, 1, 3, 4]
[2, 1, 4, 3]
[2, 3, 1, 4]
[2, 3, 4, 1]
[2, 4, 3, 1]
[2, 4, 1, 3]
[3, 2, 1, 4]
[3, 2, 4, 1]
[3, 1, 2, 4]
[3, 1, 4, 2]
[3, 4, 1, 2]
[3, 4, 2, 1]
[4, 2, 3, 1]
[4, 2, 1, 3]
[4, 3, 2, 1]
[4, 3, 1, 2]
[4, 1, 3, 2]
[4, 1, 2, 3]

step2: 字符串的全排列:

# -*-coding:utf-8 -*-
#!python3
def permutation(str):
  li = list(str)
  cnt = 0 #記錄全排列的總數(shù)
  def permutation_list(index):
    if index == len(li) -1:
      nonlocal cnt
      cnt += 1
      print(li)
    for i in range(index,len(li)):
      li[index],li[i] = li[i],li[index]
      permutation_list(index+1)
      li[index], li[i] = li[i], li[index]
  ret = permutation_list(0)
  print("共有%d中全排列" % cnt)
  return ret

備注:

在閉包中,內(nèi)部函數(shù)依然維持了外部函數(shù)中自由變量的引用—單元。內(nèi)部函數(shù)不能修改單元對(duì)象的值(但是可以引用)。若嘗試修改,則解釋器會(huì)認(rèn)為它是局部變量。這類(lèi)似于全局變量和局部變量的關(guān)系。如果在函數(shù)內(nèi)部修改全局變量,必須加上global聲明,但是對(duì)于自由變量,尚沒(méi)有類(lèi)似的機(jī)制。所以,只能使用列表。(python3中引入了關(guān)鍵字:nonlocal)

測(cè)試:

permutation('abcd')

運(yùn)行結(jié)果:

['a', 'b', 'c', 'd']
['a', 'b', 'd', 'c']
['a', 'c', 'b', 'd']
['a', 'c', 'd', 'b']
['a', 'd', 'c', 'b']
['a', 'd', 'b', 'c']
['b', 'a', 'c', 'd']
['b', 'a', 'd', 'c']
['b', 'c', 'a', 'd']
['b', 'c', 'd', 'a']
['b', 'd', 'c', 'a']
['b', 'd', 'a', 'c']
['c', 'b', 'a', 'd']
['c', 'b', 'd', 'a']
['c', 'a', 'b', 'd']
['c', 'a', 'd', 'b']
['c', 'd', 'a', 'b']
['c', 'd', 'b', 'a']
['d', 'b', 'c', 'a']
['d', 'b', 'a', 'c']
['d', 'c', 'b', 'a']
['d', 'c', 'a', 'b']
['d', 'a', 'c', 'b']
['d', 'a', 'b', 'c']
共有24中全排列

step3 : 使用python標(biāo)準(zhǔn)庫(kù)

import itertools
t = list(itertools.permutations([1,2,3,4]))
print(t)

運(yùn)行結(jié)果:

[(1, 2, 3, 4), (1, 2, 4, 3), (1, 3, 2, 4), (1, 3, 4, 2), (1, 4, 2, 3), (1, 4, 3, 2), (2, 1, 3, 4), (2, 1, 4, 3), (2, 3, 1, 4), (2, 3, 4, 1), (2, 4, 1, 3), (2, 4, 3, 1), (3, 1, 2, 4), (3, 1, 4, 2), (3, 2, 1, 4), (3, 2, 4, 1), (3, 4, 1, 2), (3, 4, 2, 1), (4, 1, 2, 3), (4, 1, 3, 2), (4, 2, 1, 3), (4, 2, 3, 1), (4, 3, 1, 2), (4, 3, 2, 1)]

可以指定排列的位數(shù):

import itertools
t = itertools.permutations([1,2,3,4],3) #只排列3位
print(list(t))

運(yùn)行結(jié)果:

[(1, 2, 3), (1, 2, 4), (1, 3, 2), (1, 3, 4), (1, 4, 2), (1, 4, 3), (2, 1, 3), (2, 1, 4), (2, 3, 1), (2, 3, 4), (2, 4, 1), (2, 4, 3), (3, 1, 2), (3, 1, 4), (3, 2, 1), (3, 2, 4), (3, 4, 1), (3, 4, 2), (4, 1, 2), (4, 1, 3), (4, 2, 1), (4, 2, 3), (4, 3, 1), (4, 3, 2)]

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

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

相關(guān)文章

  • Python操作Excel數(shù)據(jù)的封裝函數(shù)分享

    Python操作Excel數(shù)據(jù)的封裝函數(shù)分享

    對(duì)比其它編程語(yǔ)言,我們都知道Python最大的優(yōu)勢(shì)是代碼簡(jiǎn)單,有豐富的第三方開(kāi)源庫(kù)供開(kāi)發(fā)者使用。而對(duì)于數(shù)據(jù)的讀取和存儲(chǔ),對(duì)于普通人來(lái)講,除了數(shù)據(jù)庫(kù)之外,最常見(jiàn)的就是微軟的Excel。本文為大家準(zhǔn)備了Python操作Excel數(shù)據(jù)的封裝函數(shù),希望對(duì)大家有所幫助
    2022-11-11
  • 判斷網(wǎng)頁(yè)編碼的方法python版

    判斷網(wǎng)頁(yè)編碼的方法python版

    這篇文章主要為大家詳細(xì)介紹了python代碼判斷網(wǎng)頁(yè)編碼的方法,感興趣的小伙伴們可以參考一下
    2016-08-08
  • 一些Python?5行代碼的神奇操作匯總

    一些Python?5行代碼的神奇操作匯總

    最開(kāi)始學(xué)習(xí)?Python,不需要太過(guò)復(fù)雜,下面這篇文章主要給大家介紹了關(guān)于Python?5行代碼的神奇操作,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • python3.7添加dlib模塊的方法

    python3.7添加dlib模塊的方法

    這篇文章主要介紹了python3.7添加dlib模塊的方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • python內(nèi)存管理分析

    python內(nèi)存管理分析

    這篇文章主要介紹了python內(nèi)存管理,較為詳細(xì)的分析了Python的內(nèi)存管理機(jī)制,需要的朋友可以參考下
    2015-04-04
  • Python 監(jiān)測(cè)文件是否更新的方法

    Python 監(jiān)測(cè)文件是否更新的方法

    今天小編就為大家分享一篇Python 監(jiān)測(cè)文件是否更新的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • 使用python獲取cpu每秒的使用率

    使用python獲取cpu每秒的使用率

    這篇文章主要介紹了使用python獲取cpu每秒的使用率,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • PIL圖像處理模塊paste方法簡(jiǎn)單使用詳解

    PIL圖像處理模塊paste方法簡(jiǎn)單使用詳解

    這篇文章主要介紹了PIL圖像處理模塊paste方法簡(jiǎn)單使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • python采集天氣數(shù)據(jù)并做數(shù)據(jù)可視化

    python采集天氣數(shù)據(jù)并做數(shù)據(jù)可視化

    本文主要介紹了python采集天氣數(shù)據(jù)并做數(shù)據(jù)可視化,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Python基于當(dāng)前時(shí)間批量創(chuàng)建文件

    Python基于當(dāng)前時(shí)間批量創(chuàng)建文件

    這篇文章主要介紹了Python基于當(dāng)前時(shí)間批量創(chuàng)建文件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05

最新評(píng)論

洛宁县| 五峰| 方正县| 扎囊县| 铜陵市| 尤溪县| 祁东县| 琼海市| 博罗县| 安溪县| 社会| 靖安县| 洮南市| 克拉玛依市| 彭山县| 汶川县| 东山县| 平泉县| 万盛区| 弋阳县| 武山县| 加查县| 平阳县| 青龙| 临沧市| 南雄市| 汾西县| 渭南市| 新化县| 古浪县| 冀州市| 柳州市| 文化| 烟台市| 仁化县| 西畴县| 秦皇岛市| 合江县| 莎车县| 博野县| 辽宁省|