iT邦幫忙

2024 iThome 鐵人賽

DAY 12
0
Python

30天導讀 Python Software Foundation 官方翻譯文件系列 第 14

Day 14 -資料結構~導讀 Python Software Foundation 教學文件

  • 分享至 

  • xImage
  •  

本文為 Python Software Foundation -->Python 3.12.6 說明文件 -->Python教學文件 --> 5. 資料結構 --> 5.6. 迴圈技巧 --> 5.7. 深入了解條件 (Condition) --> 5.8. 序列和其他資料類型之比較 繁體中文版導讀文章

  • 內容為官方文章搭配 Colab 實測 demo 圖片,想了解實測請點擊Colab

資料結構

這個章節將會更深入的介紹一些你已經學過的東西的細節上,並且加入一些你還沒有接觸過的部分。

5.6. 迴圈技巧

當對 dictionary 作迴圈時,鍵以及其對應的值可以藉由使用 items() method 來同時取得:
https://ithelp.ithome.com.tw/upload/images/20241002/20162673m1oZymNKbj.png

當對序列作迴圈時,位置索引及其對應的值可以藉由使用 enumerate() 函式來同時取得:
https://ithelp.ithome.com.tw/upload/images/20241002/20162673Ye26ScpYMT.png

要同時對兩個以上的序列作迴圈,可以將其以成對的方式放入 zip() 函式:
https://ithelp.ithome.com.tw/upload/images/20241002/201626735kuADpBn7c.png

要對序列作反向的迴圈,首先先寫出正向的序列,再對其使用 reversed() 函式:
https://ithelp.ithome.com.tw/upload/images/20241002/20162673X8rC4r4Sur.png

要以迴圈對序列作排序,使用 sorted() 函式會得到一個新的經排序過的 list ,但不會改變原本的序列:
https://ithelp.ithome.com.tw/upload/images/20241002/201626733pjqAwJKDY.png

對序列使用 set() 可去除重複元素。對序列使用 sorted() 加上 set(),則是對經過排序後的非重複元素跑迴圈的慣用方法:
https://ithelp.ithome.com.tw/upload/images/20241002/20162673XNxtnlb5bh.png

有時我們會想要以迴圈來改變的一個 list,但是,通常建立一個新的 list 會更簡單且安全:
https://ithelp.ithome.com.tw/upload/images/20241002/20162673KbnU1Zwi45.png


5.7. 深入了解條件 (Condition)

使用在 whileif 陳述式的條件句可以包含任何運算子,而不是只有比較運算子 (comparisons) 。

比較運算子 innot in 用於隸屬資格檢測,在容器中檢查一個值是否存在(或不存在)。運算子 isis not 比較兩個物件是否真的是相同的物件。所有比較運算子的優先度都相同且都低於數值運算子。

比較運算是可以串連在一起的。例如, a < b == c 就是在測試 a 是否小於 b 和 b 是否等於 c。

比較運算可以結合布林運算子 andor,且一個比較運算的結果(或任何其他布林運算式)可以加上 not 來否定。這些運算子的優先度都比比較運算子還低,其中,not 的優先度最高,or 的優先度最低,因此 A and not B or C 等同於 (A and (not B)) or C。一如往常,括號可以用來表示任何想要的組合。

布林運算子 andor 也被稱為短路 (short-circuit) 運算子:會將其引數從左至右進行運算,當結果出現時即結束運算。例如,若 AC 為真但 B 為假,則 A and B and C 的運算並不會執行到 C。當運算結果被當成一般值而非布林值時,短路運算子的回傳值為最後被求值的引數。

將一個比較運算或其他布林運算式的結果指派給一個變數是可以的。例如:
https://ithelp.ithome.com.tw/upload/images/20241002/20162673eGZiZ1FaHN.png

注意,Python 與 C 語言不一樣,在運算式裡進行指派必須外顯地使用海象運算子 :=。 這樣做避免了在 C 語言裡常見的一種問題:想要打 == 卻在運算式裡輸入 =


5.8. 序列和其他資料類型之比較

序列物件通常可以拿來和其他相同類型的物件做比較。這種比較使用詞典式 (lexicographical) 順序:首先比較各自最前面的那項,若不相同,便可決定結果;若相同,則比較下一項,以此類推,直到其中一個序列完全用完。如果被拿出來比較的兩項本身又是相同的序列類型,則詞典式比較會遞迴地執行。如果兩個序列所有的項目都相等,則此兩個序列被認為是相等的。如果其中一個序列是另一個的子序列,則較短的那個序列為較小的序列。字串的詞典式順序使用 Unicode 的碼位 (code point) 編號來排序個別字元。以下是一些相同序列類型的比較:

(1, 2, 3)              < (1, 2, 4)
[1, 2, 3]              < [1, 2, 4]
'ABC' < 'C' < 'Pascal' < 'Python'
(1, 2, 3, 4)           < (1, 2, 4)
(1, 2)                 < (1, 2, -1)
(1, 2, 3)             == (1.0, 2.0, 3.0)
(1, 2, ('aa', 'ab'))   < (1, 2, ('abc', 'a'), 4)

注意,若使用 < 或 > 來比較不同類型的物件是合法的,表示物件擁有適當的比較方法。例如,混合的數值類型是根據它們數值來做比較,所以 0 等於 0.0,等等。否則直譯器會選擇丟出一個 TypeError 錯誤而不是提供一個任意的排序。


上一篇
Day 13 -資料結構~導讀 Python Software Foundation 教學文件
系列文
30天導讀 Python Software Foundation 官方翻譯文件14
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言