>>> math.tan(math.pi / 4) 0.9999999999999999 >>> 0.999999999999999 == math.tan(math.pi/4) False元組可轉換成列表,反之亦然。內建的 tuple() 函數接受一個列表參數,並返回一個包含一樣元素的元組,而 list() 函數接受一個元組參數並返回一個列表。從效果上看, tuple() 凍結列表,而 list() 融化元組
>>> type((False)) <class 'bool'> >>> type((False,)) <class 'tuple'>爲建立單元素元組,必須在值以後加上一個逗號。 沒有逗號,Python 會假定這只是一對額外的圓括號,雖然沒有害處,但並不建立元組。
常見的集合操做: html
>>> aset = {1,3,5,7,9} >>> bset = {2,3,5,7} >>> aset.union(bset) {1, 2, 3, 5, 7, 9} >>> aset.intersection(bset) {3, 5, 7} >>> aset.difference(bset) {9, 1} >>> aset.symmetric_difference(bset) {1, 2, 9}請記住: 集合是無序的。任何兩個包含全部一樣值(無一遺漏)的集合可認爲是相等的。
>>>a_set = {1, 2, 3} >>>b_set = {1, 2, 3, 4} >>>a_set.issubset(b_set) True >>>b_set.issuperset(a_set) True
交換字典的鍵和值
python
>>>a_dict = {'a': 1, 'b': 2, 'c': 3} >>>{value:key for key, value in a_dict.items()} {1: 'a', 2: 'b', 3: 'c'}
(format)替換域
正則表達式
>>>username = 'mark' >>>password = 'PapayaWhip' >>>"{0}'s password is {1}".format(username, password) "mark's password is PapayaWhip"
>>> import humansize, sys >>> '1MB = 1000{0.modules[humansize].SUFFIXES[1000][0]}'.format(sys) '1MB = 1000KB'注意:在使用替換域的時候,咱們在省略了字典的鍵名周圍的引號(好比 humansize)
從技術上說,字符編碼的重載聲明也能夠放在第二行,若是第一行被類unix系統中的hash-bang命令佔用了: windows
#!/usr/bin/python3 # -*- coding: windows-1252 -*-
斐波那奇生成器
數組
def fib(max): a, b = 0, 1 while a < max: yield a a, b = b, a + b
>>> from fibonacci import fib >>> for n in fib(1000): ... print(n, end=' ') 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 >>> list(fib(1000)) [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987]
正則的一個補充:
函數
>>> re.findall(' s.*? s', "The sixth sick sheikh's sixth sheep's sick.") [' sixth s', " sheikh's s", " sheep's s"]很驚奇?這個正則表達式尋找一個空格,一個 s, 而後是最短的任何字符構成的序列(.*?), 而後是一個空格, 而後是另外一個s。 在輸入字符串中,我看見了五個匹配: