空(None) None可以用來表示某一個變數的值缺失,類似於其他語言中的null。 像其他的空值:0,[]和空的string,布爾變數給的是False而不是True。 結果是: 當一個函數沒有返回任何值時,就會返回None: 結果是: Hi None 字典(Dictionaries) 字典是一種給 ...
空(None)
None可以用來表示某一個變數的值缺失,類似於其他語言中的null。
像其他的空值:0,[]和空的string,布爾變數給的是False而不是True。
if None: print("None got interpreted as True") else: print("None got interpreted as False")
結果是:
None got interpreted as False
當一個函數沒有返回任何值時,就會返回None:
def some_func(): print("Hi") var=some_func() print(var)
結果是:
Hi
None
View Code
字典(Dictionaries)
字典是一種給值賦予關鍵字的數據結構。列表可以被看做一種有著某種範圍的整數關鍵字的字典。
字典可以像列表一樣索引,用方括弧,只不過方括弧里不在是下標,而是關鍵字
ages={"Dave":24,"Mary":42,"John":58} print(ages["Dave"]) print(ages["Mary"])
結果是:
24 42View Code
索引一個不是字典的關鍵字會出現錯誤,字典可以儲存任何數據類型的值,空的字典為“{}”。
字典的關鍵字是不能改的。使用一個可以更改的object當做字典的關鍵字會產生類型錯誤(TypeError)。
bad_dict={ [1,2,3]:"one two three" }
結果是:
TypeError: unhashable type: 'list'View Code
字典函數(Dictionary Functions)
字典的關鍵字可以被賦予不同的值。如果沒有關鍵字,那就新建一個關鍵字:
squares={1:1,2:4,3:"error",4:16} squares[8]=64 squares[3]=9 print(squares)
結果是:
{1: 1, 2: 4, 3: 9, 4: 16, 8: 64}View Code
查看字典中是否存在某個關鍵字用in或not in 就像在列表中一樣。
nums={ 1:"one", 2:"two", 3:"three" } print(1 in nums) print("three"in nums) print(4 not in nums)
結果是:
True
False
True
View Code
get是一個非常好用的字典method,起的作用和索引一樣,但是如果在字典中找不到關鍵字,就會返回None,而不是錯誤
paris={ 1:"apple", "orange":[2,3,4], True:False, None:"True" } print(paris.get("orange")) print(paris.get(7)) print(paris.get(12345,"not in dictionary"))
get的第二個參數的意思是找不到關鍵字就返回這個值。
結果是:
paris={ 1:"apple", "orange":[2,3,4], True:False, None:"True" } print(paris.get("orange")) print(paris.get(7)) print(paris.get(12345,"not in the dicrionary"))View Code
元組(Tuples)
元組和列表很像,但他們是不能被更改的,用括弧就能新建一個元組,不用也可以……:
words=("spam","eggs","sausages",)
words="spam","eggs","sausages",
空元組用()新建。
元組的運行速度比列表快
其他使用方法和列表類似。
列表切片(List Slices)
列表切片是一種檢索列表值的高級方法。基本的切片方法是用兩個被冒號分開的整數來索引列表。這樣可以從舊列表返回一個新列表。
squares=[0,1,4,9,16,25,36,49,64,81] print(squares[2:6]) print(squares[3:8]) print(squares[0:1])
結果是:
[4, 9, 16, 25] [9, 16, 25, 36, 49] [0]View Code
跟range的參數相似,第一的下標的值會包括,但不包括第二個下標的值。
如果第一個下標省略,預設從頭開始,
如果第二個下標省略,預設到結尾結束。
切片同樣可以用於元組。
切片也有第三個參數,決定了步長。第一二個分別決定了開頭與結尾。
squares=[0,1,4,9,16,25,36,49,64,81]
print(squares[:6:2])
print(squares[3::3])
print(squares[::3])
結果是:
[0, 4, 16] [9, 36, 81] [0, 9, 36, 81]
參數是複數的話就倒著走。-1是倒數第一,-2是倒數第二,第三個參數為負就會倒著切,這時候第一個參數和第二個參數就要倒著看了,也就是第二個參數變成了開始,第一個變成了結尾(因此-1會使整個列表倒序)
squares=[0,1,4,9,16,25,36,49,64,81] print(squares[:-1]) print(squares[::-3]) print(squares[-3::2])
結果是:
[0, 1, 4, 9, 16, 25, 36, 49, 64] [81, 36, 9, 0] [49, 81]View Code
列表解析(List Comprehensions)
這是一種快速創建遵循某些規則的列表的方法:
cubes=[i**3 for i in range(5)] print(cubes)
結果是:
[0, 1, 8, 27, 64]View Code
也可以包含if statement 加強限定條件。
evens=[i**2 for i in range(10) if i**2 % 2==0] print(evens)
結果是:
[0, 4, 16, 36, 64]View Code
evens=[i**2 for i in range(10) if i**2 % 2==0] print(evens)
結果是:
[0, 4, 16, 36, 64]View Code
range的範圍過大會超出記憶體的容量引發MemoryError
String Formatting
為了使string和non-string結合,可以把non-string轉化為string然後再連起來。
string formatting提供了一種方式,把non-string嵌入到string里,用string的format method來替換string里的參數。
nums=[4,5,6] msg="Numbers:{0} {1} {2}".format(nums[0],nums[1],nums[2]) print(msg)
format里的參數和{}里的參數是對應的。{}的參數是format()里參數的下標
參數被命名這種情況也是可以的:
a="{x},{y}".format(x=5,y=12) print(a)
結果是:
5,12View Code
Useful Functions
Python 內置了許多有用的函數
join ,用一個string充當分隔符把一個由string組成的列表連起來。
print(",".join(["spam","eggs","ham"]))
結果是:
spam,eggs,hamView Code
replace,用一個string 取代另一個。
print("Hello ME".replace("ME","world"))
結果是:
Hello worldView Code
startwith和endwith,判斷是否是由……開頭或結束:
print("This is a sentence.".startswith("This")) print("This is a sentence.".endswith("sentence."))
結果是:
True
True
View Code
lower和upper可以改變string的大小寫
print("This is A sentence.".upper()) print("THIS IS a SENTENCE..".lower())
結果是:
THIS IS A SENTENCE. this is a sentence.View Code
split的作用於join 相反,他可以按某個string為分隔符將一串string分開併成為列表的形式。
print("apple,eggs,banana".split(","))
結果是:
['apple', 'eggs', 'banana']
有關數學的一些函數有:最大值max,最小值min,絕對值abs,約等數round(第二個參數可以決定保留幾位小數),對列表裡的數求和用sum等:
print(min(1,2,3,4,5,6,7)) print(max(1,2,3,4,5,6,7)) print(abs(-98)) print(round(78.632453434,4)) print(sum([2.12121,23232323]))
結果是:
1 7 98 78.6325 23232325.12121View Code
all和any可以把列表當成參數,然後返回True或 False,
nums=[55,44,33,22,11] if all([i <56 for i in nums]): print("All smaller than 56.")
nums=[55,44,33,22,11] if any([i <22 for i in nums]): print("at least one is smaller than 22.")
all和any的區別是,all需要所有的值都滿足,any只需要有一個滿足就行了。
枚舉(enumerate),字面意思,把列表中的值按順序一個一個列出來。
nums=[55,44,33,22,11] for v in enumerate(nums): print(v)
結果是:
(0, 55) (1, 44) (2, 33) (3, 22) (4, 11)View Code