操作Python列表Ⅰ

前言

在看了上一篇列表簡介之後,你應該對列表有了初步的瞭解,知道了怎麼創建和操作列表元素。不知道你有沒有想過,上篇文章的操作列表元素是基於“我們已經知道列表元素內容和列表元素數量很少”的前提下,如果現在有個列表,我們不知道它有多少個元素,或者列表中含有一百萬個以上的元素我們怎麼對其進行操作?

daizhu

在本文中,你將學習如何遍歷整個列表,遍歷列表就是循環操作列表中的每個元素,這在Python中只需要幾行代碼,非常的easy!


1. 遍歷整個列表

事實上,我們經常需要循環列表並對其中每個元素執行相同的操作。

比如,我們有個魔術師名單,現在需要你講其中每個魔術師的名字都打印出來。

名單如下:

magicians = ['Kelvin', 'Vicky', 'Howord']

你看到這個名單以後肯定覺得

so easy

於是你吭哧吭哧地寫了起來,運行前面你學到的知識,你寫出來的代碼是這樣的:

magicians = ['Kelvin', 'Vicky', 'Howord']
print(magicians[0])
print(magicians[1])
print(magicians[2])

運行這段代碼,結果如圖1-1:

1-1

圖1-1

表面上看你得到了正確的結果,當然,實際上你得到的也是正確的結果。

但是我們說,這樣寫的代碼並不好,爲什麼?因爲它不夠健壯、不夠靈活。

現在如果我改需求(產品經理上身):魔術師名單上有100位魔術師,現在需要你把每個魔術師的名字打印出來,你就要寫 print(magicians[0]) ~ print(magicians[99])100遍。

我要是再喪心病狂地讓你在魔術師名字前加上 hello,你就要改100遍代碼。

可能對有些耐心極好的人來說,100遍也可以接收。

那我列表如果是1000個人、10000個人、100000個人呢?還可能更多。相信就算是如來佛祖來了都受不了。

sxbk

扯了這麼一大堆,是想說明一點:如果列表中元素執行相同的操作,用循環簡直能讓人增壽。

下面用 for 循環來打印魔術師名單中的所有名字:

magicians = ['Kelvin', 'Vicky', 'Howord']
for magician in magicians:
    print(magician)

運行這段代碼,結果圖1-2和圖1-1一樣:

1-2

圖1-2

結果是一樣的,不一樣的是:倘若將來列表中魔術師變成了一百萬甚至一千萬個,for循環的代碼一點都不需要改變,是不是很棒?!haha~

如果有人再桑心病狂地讓你在每個魔術師名字前加上 hello,你只需要把上面的第三行代碼改成 print("Hello, " + magician) 就可以了,不管魔術師有多少個,只需要改一行。

好了,現在我來解釋一下 for 循環代碼:首先,我們定義了一個列表,這個在之前的文章講過,不懂的可以看我之前的文章或者關注公衆號 猿天罡 ;接下來,我們定義了一個 for循環,看第二行代碼,這行代碼讓Python從列表 magicians 中取出一個名字,並將其存儲在變量 magician中;最後我們讓 Python 打印前面存儲到變量 magician 中的名字。對於列表中的每個名字,Python都將重複執行第二行和第三行的代碼。

2. 深入地研究循環

循環這種概念很重要,因爲它是讓計算機自動完成重複工作的常見方式之一。

讓我們再把上面的 for 循環拿出來講講其中的語法和語義:

在前面的打印魔術師名單的簡單循環中,Python首先讀取其中的第一行代碼:

for magician in magicians:

這行代碼讓 Python 獲取列表 magicians 中的第一個值 Kelvin ,並將其存儲到變量 magician 中。接下來, Python 讀取下一行代碼:

    print(magician)

它讓 Python 打印 magician 的值——當然是 Kelvin

因爲該列表還包含其他值, 循環沒有執行完,所以 Python 返回到循環的第一行:

for magician in magicians:

Python 獲取列表中下一個魔術師的名字 Vicky ,並將其存儲到變量 magician 中,再執行下面這行代碼:

    print(magician)

Python 再次打印變量 magician 中的值——此時是 Vicky 。接下來, Python 再次執行整個循環,對列表最後一個值—— Howord 進行處理。

至此,列表中沒有其他的值了,因此 Python 接着執行下一行代碼。

在舉的栗子中,for 循環後面沒有其他的代碼,因此程序就此結束。

zhuyi

注意事項:

  • 使用循環時,對列表中的每一個元素,都將執行循環指定的步驟(如栗子裏的,print(magician)),而不管列表包含多少個元素。如果列表包含一百萬個元素,Python 就重複執行指定的步驟一百萬次,且通常執行的速度非常快,不信你可以試試。
  • 編寫 for 循環時,對於用於存儲列表中每個值的臨時變量(如栗子裏的,magician),可隨意取名。但我們建議取有意義的名稱,別人看代碼的時候好理解。

3. 在 for 循環中執行更多的操作

for 循環中,可對每個元素執行任何操作。

比如,我們有個魔術師列表,現在需要你對於每個魔術師打印一條信息,指出他們的表演很精彩:

magicians = ['Kelvin', 'Vicky', 'Howord']
for magician in magicians:
    print(magician.title() + ", your trick is amazing!")

運行這段代碼,結果如圖3-1:

3-1

圖3-1

相比於前一個示例,唯一不同的是對於每位魔術師,都打印了一條以其名字開頭的消息。

for 循環中,想包含多少行代碼都可以
在代碼 for magician in magicians: 後面,每個縮進的代碼行都是循環的一部分,並且對列表中的每個元素都執行一次。

因此,可對列表中每個值執行任意次數的操作。

舉例說明,在上面示例的基礎上,告訴每個魔術師,你期待他的下次表演:

magicians = ['Kelvin', 'Vicky', 'Howord']
for magician in magicians:
    print(magician.title() + ", your trick is amazing!")
    print("I can't wait to see u next trick, " + magician.title() + "\n")

由於兩條 print 語句都縮進了,因此它們將針對列表中每個元素都執行一次。

第二個 print 語句裏的 \n 表示 換行

運行這段代碼,結果如圖3-2:

3-2

圖3-2

實際上,在大多數時候,在 for 循環中一行代碼解決不了問題,你會發現使用 for 循環對每個元素執行衆多不同的操作很有用。

4. 在 for 循環結束後執行一些操作

for 循環結束後再怎麼做?通常,你需要提供總結性輸出或者接着執行程序必須完成的其他任務。

for 循環後面,沒有縮進的代碼都只執行一次,且不會重複執行。

比如,還是魔術師列表,向每位魔術師表示期待下次表演後,打印一條向全體魔術師致謝的消息,感謝他們的精彩演出:

magicians = ['Kelvin', 'Vicky', 'Howord']
for magician in magicians:
    print(magician.title() + ", your trick is amazing!")
    print("I can't wait to see u next trick, " + magician.title() + "\n")
# 沒有縮進,在循環結束後僅執行一次
print("Thank u, everyone, That was a great magic show!")

運行這段代碼,結果如圖4-1:

4-1

圖4-1

從結果可以看出,由於第三個 print 語句沒有縮進,因此只執行了一次。

結尾語

看到這裏,你心裏應該對遍歷列表有了點數,作爲初學者,先不要深究其原理,首先要做的是把這語法記住,然後寫幾個栗子,做到熟練運用,到了一定的地步,你會豁然開朗、融會貫通的。

如果你在學習過程中有任何疑問,可以關注文章下方↓↓↓的公衆號及時與我聯繫,我們相互討論,共同學習。

最後,祝你學有所成。

公衆號-猿天罡

歡迎大家點贊、關注、收藏,我是Kelvin,我們下期再見,(ToT)/~~~
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章