Python基礎教程 成員資格
2.2.5 成員資格
要檢查特定的值是否包含在序列中,可使用運算符in。這個運算符與前面討論的運算符(如乘法或加法運算符)稍有不同。它檢查是否滿足指定的條件,並返回相應的值:滿足時返回True,不滿足時返回False。這樣的運算符稱為布爾運算符,而前述真值稱為布爾值。布爾表達式將在5.4節詳細介紹。
下面是一些in運算符的使用示例:
>>> permissions = "rw"
>>> "w" in permissions
True
>>> "x" in permissions
False
>>> users = ["mlh", "foo", "bar"]
>>> input("Enter your user name: ") in users
Enter your user name: mlh
True
>>> subject = "$$$ Get rich now!!! $$$"
>>> "$$$" in subject
True
開頭兩個示例使用成員資格測試分別檢查"w"和"x"是否包含在字元串變數permissions中。在UNIX系統中,可在腳本中使用這兩行代碼來檢查對文件的寫入和執行許可權。接下來的示例檢查提供的用戶名mlh是否包含在用戶列表中,這在程序需要執行特定的安全策略時很有用(在這種情況下,可能還需檢查密碼)。最後一個示例檢查字元串變數subject是否包含字元串"$$$",這可用於垃圾郵件過濾器中。
注意:相比於其他示例,檢查字元串是否包含"$$$"的示例稍有不同。一般而言,運算符in檢查指定的對象是否是序列(或其他集合)的成員(即其中的一個元素),但對字元串來說,只有它包含的字元才是其成員或元素,因此下面的代碼完全合理:
>>> "P" in "Python"
True
事實上,在較早的Python版本中,只能對字元串執行這種成員資格檢查——確定指定的字元是否包含在字元串中,但現在可使用運算符in來檢查指定的字元串是否為另一個字元串的子串。
代碼清單2-4所示的程序從用戶那裡獲取一個用戶名和一個PIN碼,並檢查它們組成的列表是否包含在資料庫(實際上也是一個列表)中。如果用戶名?PIN碼對包含在資料庫中,就列印字元串"Access granted"(if語句在第1章提到過,並將在第5章全面介紹)。
代碼清單2-4序列成員資格示例
# 檢查用戶名和PIN碼
database = [
["albert", "1234"],
["dilbert", "4242"],
["smith", "7524"],
["jones", "9843"]
]
username = input("User name: ")
pin = input("PIN code: ")
if [username, pin] in database: print("Access granted")
長度、最小值和最大值
內置函數len、 min和max很有用,其中函數len返回序列包含的元素個數,而min和max分別返回序列中最小和最大的元素(對象比較將在5.4.6節的「比較運算符」部分詳細介紹)。
>>> numbers = [100, 34, 678]
>>> len(numbers)
3
>>> max(numbers)
678
>>> min(numbers)
34
>>> max(2, 3)
3
>>> min(9, 3, 2, 5)
2
基於前面的解釋,這些代碼應該很容易理解,但最後兩個表達式可能例外。在這兩個表達式中,調用max和min時指定的實參並不是序列,而直接將數作為實參。
※如何將Python自然語言處理速度提升100倍:用spaCy/Cython加速NLP
※大家都在學的編程語言 Python,可以用來幹什麼?
TAG:Python |