python內置數據結構list、set、dict、tuple(一)

      網友投稿 793 2022-05-28

      漢諾塔問題

      規則:

      每次只能移動一個盤子

      任意一次移動,三個塔的狀態必須是小盤子在上,大盤子在上

      python內置數據結構list、set、dict、tuple(一)

      方法:

      n=1:直接把A上的一個盤子移動到C上,A->C

      n=2:

      把小盤子從A放到B上,A->B

      把大盤子從A放到C上,A->C

      把小盤子從B放到C上,B->C

      n=3:

      把A上的兩個盤子,通過C移動到B上去,調用遞歸實現

      把A上剩下的一個最大盤子移動到C上,A->C

      把B上兩個盤子,借助于A,挪到C上去,調用遞歸

      n=n:

      把A上的n-1個盤子,借助于C,移動到B上去,調用遞歸

      把A上的最大盤子,也是唯一一個,移動到C上去,A->C

      把B上n-1個盤子,借助于A,移動到C上去,調用遞歸

      def hano(n, a, b, c): ''' 漢諾塔的遞歸實現 n:代表幾個塔 a:代表第一個塔,開始的塔 b:代表第二個塔,中間過渡的塔 c:代表第三個塔,目標塔 ''' if n == 1: print(a, "-->", c) return None ''' if n== 2: print(a, "-->", b) print(a, "-->", c) print(b, "-->", c) return None ''' # 把n-1個塔,從a塔借助于c塔,挪到b塔上去 hano(n-1, a, c, b) print(a, "-->", c) # 把n-1個塔,從b塔,借助于a塔,挪到c塔上去 hano(n-1, b, a, c) a = 'A' b = 'B' c = 'C' n = 1 hano(n, a, b, c)

      A --> C

      n = 2 hano(n, a, b, c)

      A --> B A --> C B --> C

      n = 3 hano(n, a, b, c)

      A --> C A --> B C --> B A --> C B --> A B --> C A --> C

      n = 5 hano(n, a, b, c)

      A --> C A --> B C --> B A --> C B --> A B --> C A --> C A --> B C --> B C --> A B --> A C --> B A --> C A --> B C --> B A --> C B --> A B --> C A --> C B --> A C --> B C --> A B --> A B --> C A --> C A --> B C --> B A --> C B --> A B --> C A --> C

      List(列表)

      del:刪除命令

      # del 刪除 a = [1,2,3,4,5,6] del a[2] print(a)

      [1, 2, 4, 5, 6]

      # del 刪除 # 如果使用del之后,id的值和刪除前不一樣,則說明刪除生成了一個新的List a = [1,2,3,4,5,6] print(id(a)) del a[2] print(id(a)) print(a)

      1787345100360 1787345100360 [1, 2, 4, 5, 6]

      # del一個變量后不能再繼續使用此變量 del a print(a)

      --------------------------------------------------------------------------- NameError Traceback (most recent call last) in 1 # del一個變量后不能再繼續使用此變量 ----> 2 del a 3 print(a) NameError: name 'a' is not defined

      列表相加

      # 使用加號連接兩個列表 a = [1,2,3,4,5] b = [5,6,7,8,9] d = ['a', 'b', 'c'] c = a + b + d print(c)

      [1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 'a', 'b', 'c']

      # 使用乘號操作列表 # 列表直接跟一個整數想乘 # 相當于把n個列表接在一起 a = [1,2,3,4,5] b = a * 3 print(b)

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

      # 成員資格運算 # 就是判斷一個元素是否在列表list里邊 a = [1,2,3,4,5,6] b = 8 # c的值是一個布爾值 c = b in a print(c) b = 4 print(b in a)

      False True

      # not in a = [1,2,3,4,5] b = 9 print(b not in a)

      True

      列表的遍歷

      for

      while

      # for in list a = [1,2,3,4,5] # 挨個打印a里邊的元素 for i in a: print(i)

      1 2 3 4 5

      # java, c++ 程序員寫的Python代碼是這樣的 for i in range(0,len(a)): print(a[i]) i += 1

      1 2 3 4 5

      b = ["I love you"] for i in b: print(i)

      I love you

      # range # in 后面的變量要求是可以迭代的內容 for i in range(1,10): print(i) print(type(range(1,10)))

      1 2 3 4 5 6 7 8 9

      # while循環訪問list # 一般不用while遍歷list a = [1,2,3,4,5,6] length = len(a) # indx表示的是list的下標 indx = 0 while indx < length: print(a[indx]) indx += 1

      1 2 3 4 5 6

      # 雙層列表循環 # a為嵌套列表,或者叫雙層列表 a = [["one", 1], ["two", 2], ["three", 3]] for k,v in a: print(k, "--", v)

      one -- 1 two -- 2 three -- 3

      # 雙層列表循環變異 # a為嵌套列表,或者叫雙層列表 a = [["one", 1, "enis"], ["two", 2], ["three", 3,4,5,6,8]] for k,v in a: print(k, "--", v)

      --------------------------------------------------------------------------- ValueError Traceback (most recent call last) in 4 a = [["one", 1, "enis"], ["two", 2], ["three", 3,4,5,6,8]] 5 ----> 6 for k,v in a: 7 print(k, "--", v) ValueError: too many values to unpack (expected 2)

      # 雙層列表循環變異 # a為嵌套列表,或者叫雙層列表 a = [["one", 1, "enis"], ["two", 2, "zwei"], ["three", 3, "drei"]] # 這個例子說明:k,v,w的個數應該跟解包出來的變量個數一致 for k,v,w in a: print(k, "--", v, "--", w)

      one -- 1 -- enis two -- 2 -- zwei three -- 3 -- drei

      列表內涵:List content

      通過簡單的方法創作列表

      # for 創建 a = ['a', 'b', 'c'] # 用List a創建一個List b # 下面的代碼的含義是,對于所有a中的元素,逐個放入新列表b中 b = [i for i in a] print(b)

      ['a', 'b', 'c']

      # 對a中所有元素乘以10,生成一個新List a = [1, 2, 3, 4, 5] # 用List a創建一個List b # 下面的代碼的含義是,對于所有a中的元素,逐個放入新列表b中 b = [i*10 for i in a] print(b)

      [10, 20, 30, 40, 50]

      # 還可以過濾原來List中的內容并放入新列表 # 比如原有列表,需要把所有a中的偶數生成新的列表b a = [x for x in range(1,35)] # 生成從1到34的一個列表 # 把a中所有偶數生成一個新的列表 b b = [m for m in a if m % 2 == 0] print(b)

      [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34]

      # 列表生成式可以嵌套 # 有兩個列表a,b a = [i for i in range(1,4)] # 生成List a print(a) b = [i for i in range(100,400) if i % 100 == 0] print(b) # 列表生成是可以嵌套,此時等于兩個for循環嵌套 c = [m+n for m in a for n in b] print(c) # 上面代碼跟下面代碼等價 for m in a: for n in b: print(m+n, end=" ") print() # 嵌套的列表生成也可以用條件表達式 c = [m+n for m in a for n in b if m+n < 250] print(c)

      [1, 2, 3] [100, 200, 300] [101, 201, 301, 102, 202, 302, 103, 203, 303] 101 201 301 102 202 302 103 203 303 [101, 201, 102, 202, 103, 203]

      關于列表的常用函數

      # len:求列表長度 a = [x for x in range(1,100)] print(len(a)) # max:求列表中的最大值 # min:同理 print(max(a)) b = ["man", "film", "python"] print(max(b))

      99 99 python

      # List:將其他格式的數據轉換成List a = [1,2,3] print(list(a))

      [1, 2, 3]

      s = "I love you" print(list(s))

      ['I', ' ', 'l', 'o', 'v', 'e', ' ', 'y', 'o', 'u']

      # 把range產生的內容轉換成list print(list(range(12,19)))

      [12, 13, 14, 15, 16, 17, 18]

      Python

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:搭載 Apple T2 安全芯片的 Mac 電腦詳細的U盤裝系統圖文教程
      下一篇:Linux常用命令整理(面試官都饞哭了)
      相關文章
      亚洲毛片一级带毛片基地| 国产亚洲一区二区手机在线观看| 久久久久久亚洲精品中文字幕 | 亚洲sm另类一区二区三区| 亚洲成av人片不卡无码| 亚洲黄网站wwwwww| 亚洲无删减国产精品一区| 亚洲av日韩av高潮潮喷无码| 亚洲AV无码久久精品狠狠爱浪潮| 亚洲午夜av影院| 亚洲人成电影在线播放| 亚洲一区精品伊人久久伊人| 亚洲精品天堂成人片?V在线播放| 亚洲国产成人久久精品99| 国产成人亚洲精品无码AV大片| AV激情亚洲男人的天堂国语| 色天使色婷婷在线影院亚洲| 婷婷亚洲综合五月天小说在线 | 亚洲AV无码久久精品成人| 久久久综合亚洲色一区二区三区| 亚洲av无码乱码国产精品| 亚洲精品福利视频| 亚洲黄色免费网址| 亚洲一区电影在线观看| 亚洲一日韩欧美中文字幕在线| 亚洲精品9999久久久久无码| 国产成人人综合亚洲欧美丁香花| 亚洲精品色在线网站| 亚洲中久无码不卡永久在线观看| 国产成人精品亚洲精品| 国产亚洲A∨片在线观看| 亚洲A∨无码一区二区三区| 精品亚洲A∨无码一区二区三区| 亚洲欧洲日产专区| 国产人成亚洲第一网站在线播放| 亚洲精品无码不卡在线播放| 无码专区一va亚洲v专区在线| 亚洲人成色7777在线观看不卡 | 亚洲精品无码专区在线在线播放 | 亚洲AV无码国产精品麻豆天美| 亚洲视频在线播放|