<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python中的for循環(huán),沒你想的那么簡單~

          共 4994字,需瀏覽 10分鐘

           ·

          2021-10-14 17:19

          公眾號:尤而小屋
          作者:Peter


          一年四季,循環(huán)往復:說到底就是一個循環(huán)的問題

          for語句實際上解決的是循環(huán)問題。在很多的高級語言中都有for循環(huán)(for loop)。

          for語句其實是編程語言中針對可迭代對象的語句,它的主要作用是允許代碼被重復執(zhí)行??匆欢蝸碜跃S基百科的介紹:

          In computer science, a for-loop (or simply for loop) is a control flow statement for specifying iteration, which allows code to be executed repeatedly。(作用:介紹了for循環(huán)是什么?)

          A for-loop has two parts: a header specifying the iteration, and a body which is executed once per iteration. (for循環(huán)是什么構成的?)

          • 是什么:在計算科學中,是針對特殊迭代對象的控制流語句,能夠重復執(zhí)行
          • 怎么構成:一個頭部(是可迭代對象)+ 每個對象的執(zhí)行

          本文的主要內容如下:

          1、可迭代對象

          1.1什么是可迭代對象

          可迭代對象(Iteratable Object) 是能夠一次返回其中一個成員的對象,比如我們常用的字符串、列表、元組、集合、字典等等之類的對象都屬于可迭代對象,獲取到這些對象我們就可以用for循環(huán)來進行操作。

          簡單來理解,任何你可以循環(huán)遍歷的對象都是可迭代對象。

          1.2怎么判斷

          如何判斷一個Python對象是不是可迭代對象?通常是使用 isinstance()函數來判斷對象是否是可迭代對象

          from?collections?import?Iterable

          小結:在Python常見的數據對象中,只有數字是不可迭代的,字符串、元組、列表、字典等都是可迭代的

          2、字符串的for循環(huán)

          一次遍歷打印字符串中的每個元素

          for?i?in?"python":?
          ????print(i)????
          p
          y
          t
          h
          o
          n

          在看另一個例子:

          for?i?in?"abcdefg":
          ????print(i)
          a
          b
          c
          d
          e
          f
          g

          3、列表的for循環(huán)

          不管是單層列表還是多層的嵌套列表,我們都可以遍歷打印出來:

          #?單層列表

          a?=?["小明","小紅","小張","小王"]

          for?i?in?a:
          ????print(i)??#?打印列表中的每個元素
          小明
          小紅
          小張
          小王
          #?嵌套列表

          b?=?["小明","小紅","小張","小王",[19,20,18,23]]

          for?i?in?b:
          ????print(i)
          小明
          小紅
          小張
          小王
          [19, 20, 18, 23]

          上面的例子中最后一個元素當做整體被打印出來,如果也想分開打印呢?

          def?qiantao(x):???#?定義一個函數
          ????for?each?in?x:??#?遍歷每個原始列表中的每個元素
          ????????if?isinstance(each,?list):??#?判斷每個元素是否是列表:isintance
          ????????????qiantao(each)??#?如果是列表,遞歸執(zhí)行函數qiantao()
          ????????else:
          ????????????print(each)??#?如果不是列表,就直接打印該元素
          ????????????
          b?=?["小明","小紅","小張","小王",[19,20,18,23]]

          #?調用函數,傳入列表b
          qiantao(b)??
          小明
          小紅
          小張
          小王
          19
          20
          18
          23

          4、元組的for循環(huán)

          元組tuple的循環(huán)和列表是類似的:

          t?=?("小明","小紅","小王")

          for?i?in?t:
          ????print(i)
          小明
          小紅
          小王

          5、字典的for循環(huán)

          我們使用keys()、values()、items(),我們可以分別遍歷字典的鍵、值和鍵值對。需要注意的是:遍歷字典默認是遍歷字典的鍵,先定義一個字典:

          d?=?{"name":"Peter","age":20,"sex":"male","address":"china"}

          5.1keys()

          遍歷字典的鍵;

          for?i?in?d.keys():??#?遍歷字典的鍵
          ????print(i)
          name
          age
          sex
          address
          for?i?in?d:??#?默認就是遍歷鍵的取值
          ????print(i)
          name
          age
          sex
          address

          5.2 values()

          遍歷字典的值:

          for?i?in?d.values():??#?遍歷字典的值
          ????print(i)
          Peter
          20
          male
          china

          5.3 items()

          同時遍歷字典的鍵和值

          for?i?in?d.items():??#?遍歷字典的值
          ????print(i)
          ('name', 'Peter')
          ('age', 20)
          ('sex', 'male')
          ('address', 'china')

          分別取出字典的鍵和值:

          for?k,v?in?d.items():
          ????print(k?+?"--->"?+?str(v))
          name--->Peter
          age--->20
          sex--->male
          address--->china

          6、range函數的for循環(huán)

          range函數是 Python 內置函數,用于生成一系列連續(xù)整數,多用于 for 循環(huán)中。

          range(start,stop,step)
          • start:包含start,默認為0,可不寫則默認為0
          • stop:不包含stop,必須寫
          • 步長step可正可負,默認是1,不能為0

          1、基礎案例

          range(10)??#?生成的是可迭代對象
          range(0, 10)

          默認開頭是0

          range(0,10)
          range(0, 10)

          指定開頭為1

          range(1,10)
          range(1, 10)

          下面是將結果展開成列表:

          list(range(10))??#?不包含10(尾部)
          [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

          指定步長為2:

          list(range(0,10,2))??#?不包含10,步長是2
          [0, 2, 4, 6, 8]

          總結:range函數是包含頭部不包含尾部

          for?i?in?range(10):
          ????print(i)
          0
          1
          2
          3
          4
          5
          6
          7
          8
          9

          2、找出100以內能夠被5整除的數:

          for?i?in?range(101):??#?不包含101,0-100
          ????if?i?%?5?==?0:??#?%表示求余數:余數為0則表示整除
          ????????print(i,end="、")
          0、5、10、15、20、25、30、35、40、45、50、55、60、65、70、75、80、85、90、95、100、

          3、高斯求和

          求出1到100的所有數之和

          sum?=?0

          for?i?in?range(1,101):
          ????sum?=?sum?+?i??#?每循環(huán)一次,sum就是這個數字
          ????
          sum
          5050

          求出100以內奇數的和:

          sum?=?0

          #?步長為2,從1開始:1,3,5,7...
          for?i?in?range(1,101,2):??
          ????sum?=?sum?+?i
          ????
          sum
          2500

          求出100以內偶數的和:

          sum?=?0

          #?步長為2,從2開始:2,4,6,8...
          for?i?in?range(2,101,2):??
          ????sum?=?sum?+?i
          ????
          sum
          2550

          7、多個for語句

          for語句中還可以再使用for語句:

          for?i?in?["python","java","html"]:
          ????for?j?in?i:
          ????????print(i.upper(),j)????# upper():將字母變成大寫
          PYTHON p
          PYTHON y
          PYTHON t
          PYTHON h
          PYTHON o
          PYTHON n
          JAVA j
          JAVA a
          JAVA v
          JAVA a
          HTML h
          HTML t
          HTML m
          HTML l
          for?i?in?[4,5,6]:
          ????for?j?in?[1,2,3]:
          ????????print(i*j)??#?實現(xiàn)任意兩個數的乘法
          4??#?4*1
          8??#?4*2
          12?#?4*3
          5??#?5*1?
          10?#?5*2
          15?#?5*3
          6??#?6*1
          12?#?6*2
          18?#?6*3

          8、列表推導式

          (1)上面我們提到能夠被5整除的數:使用for循環(huán)和if來解決

          five?=?[]??#?定義空列表

          for?i?in?range(101):??#?不包含101,0-100
          ????if?i?%?5?==?0:??#?%表示求余數:余數為0則表示整除
          ????????five.append(i)??#?添加到列表中
          ????????
          five
          [0,
          5,
          10,
          15,
          20,
          25,
          30,
          35,
          40,
          45,
          50,
          55,
          60,
          65,
          70,
          75,
          80,
          85,
          90,
          95,
          100]

          (2)使用列表推導式如何實現(xiàn)呢?

          [x?for?x?in?range(101)?if?x?%?5?==?0]
          [0,
          5,
          10,
          15,
          20,
          25,
          30,
          35,
          40,
          45,
          50,
          55,
          60,
          65,
          70,
          75,
          80,
          85,
          90,
          95,
          100]

          9、for-else

          也許你聽過if-else,但是聽到for-else語句嗎?這也算是Python中的一個冷門知識點

          for?i?in?range(5):
          ????print(i)
          else:
          ????print("結束")
          0
          1
          2
          3
          4
          結束

          也就是說:for語句結束了依然會執(zhí)行else的語句

          for?i?in?[]:
          ????print(i)
          ????
          else:
          ????print("結束")
          結束

          下面的例子中,當i除以3的余數是2的時候回跳出并終止整個for循環(huán),后面的else就不會執(zhí)行了

          for?i?in?range(10):
          ????print(i)
          ????if?i?%?3?==?2:
          ????????break
          else:
          ????print("結束")
          0
          1
          2

          10、實現(xiàn)三角陣列

          for?i?in?range(1,11):
          ????for?k?in?range(1,i):
          ????????print(k,?end="?")
          ????print("\n")


          1 
          1 2
          1 2 3
          1 2 3 4
          1 2 3 4 5
          1 2 3 4 5 6
          1 2 3 4 5 6 7
          1 2 3 4 5 6 7 8
          1 2 3 4 5 6 7 8 9

          如果我們想要倒過來,該如何實現(xiàn)呢?

          for?i?in?range(10,0,-1):
          ????for?k?in?range(1,i):
          ????????print(k,?end="?")
          ????print("\n")
          1 2 3 4 5 6 7 8 9 
          1 2 3 4 5 6 7 8
          1 2 3 4 5 6 7
          1 2 3 4 5 6
          1 2 3 4 5
          1 2 3 4
          1 2 3
          1 2
          1

          11、99乘法表

          下面舉個例子來說明如何實現(xiàn)99乘法表,如何玩轉99乘法表參考以前的文章

          直到今天,我終于學會99乘法表啦~

          for?i?in?range(1,10):
          ????for?j?in?range(1,i+1):??#?為了保證有4*4,也就是同個數字相乘的等式,需要讓i出現(xiàn),使用i+1
          ????????print('{}x{}={}'.format(j,?i,?i*j),?end="?")??#?end的結束符號用空格
          ????print("\n")

          往期推薦

          1、Python 3.10 正式發(fā)布了!我發(fā)現(xiàn)了一個可怕的功能...

          2、如何找出 Python 程序中最慢的那行代碼?

          3、寫 Python 代碼不可不知的函數式編程技術(留言送書)

          4、某公司領導稱“80后就該退出iT行業(yè)”,遭網友怒噴

          5、稚暉君自制機械臂,能給葡萄縫針的那種,成本1萬塊,網友:能把腦子開源一下?


          點擊關注公眾號,閱讀更多精彩內容
          瀏覽 114
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  一级免费黄色毛片 | 国产成人无码精品久久久久 | 日韩欧美国产成人电影 | A片视频在线观看 | 青青草视频大香蕉 |