Python 速查手冊

3.8 in 運算

關鍵字 (keyword) in 用來判斷複合資料型態如串列 (list) 、字串 (string) 等是否包含指定元素,字典 (dictionary) 方面則是判斷是否包括指定的 key 。

例如判斷整數 1 是否在含有整數 123 的串列裡,結果回傳 True ,再來判斷字串 "1" 是否在含有整數 123 的串列裡,結果回傳 False ,因為字串 "1" 跟整數 1 是不一樣的

a = [1, 2, 3]
print(1 in a)
print("1" in a)

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:in01.py
# 功能:示範 in 運算
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 in01.py
True
False
$

判斷字串 "123" 是否包含字串 "23" ,結果回傳 True ,繼續判斷字串 "123" 是否包含整數 23 ,結果直接發生 TypeError ,這是說字串中只能有字串,不能有字串以外例如整數之類的資料型態 (data type)

a = "123"
print("23" in a)
print(23 in a)

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:in02.py
# 功能:示範 in 運算
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 in02.py
True
Traceback (most recent call last):
  File "in02.py", line 3, in <module>
    print(23 in a)
TypeError: 'in <string>' requires string as left operand, not int
$

注意關鍵字用在字典是判斷是否有指定的 key ,假設 key 不存在就會回傳 False

a = {1:2, 3:4}
print(1 in a)
b = {2:1, 4:3}
print(1 in b)

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:in03.py
# 功能:示範 in 運算
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 in03.py
True
False
$

in 如果跟 not 連用的話,這用來判斷不存在的情況

a = [1, 2, 3]
print(1 not in a)
print("1" not in a)

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:in04.py
# 功能:示範 in 運算
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 in04.py
False
True
$

in 也會跟 for 連用,這就構成了 for-in 迴圈 (loop) ,此時 for 之後的變數會依序取得 in 之後複合資料型態中的每個元素,如此例計算串列中所有元素的總和

sum = 0
for i in [1, 2, 3]:
    sum += i
print(sum)

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:in05.py
# 功能:示範 in 運算
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 in05.py
6
$

上一頁: 3.7 is 運算
Python 速查手冊 - 目錄
下一頁: 3.9 lambda 運算
回 Python 教材首頁