-
count()方法
count()方法用來統計tuple中某個元素出現的次數。
T?=?(1,?1,?2,?2,?3,?3,?1,?3,?5,?7,?9) print(T.count(1))?#?==>?3 print(T.count(5))?#?==>?1
對于不存在的元素,count方法不會報錯,而是返回0,這是合理的,因為元組里面有0個不存在的元素。
T?=?(1,?1,?2,?2,?3,?3,?1,?3,?5,?7,?9) print(T.count(10))?#?==>?0
查看全部 -
請注意,元組(tuple)的這個特性是非常重要的,在運行上tuple的性能是list的數倍。
查看全部 -
tuple和list不一樣的是,tuple是固定不變的,一旦變成tuple,tuple中的每一個元素都不可被改變,同時也不能再往tuple中添加數據,而list是可以的。
請注意,元組(tuple)的這個特性是非常重要的,在運行上tuple的性能是list的數倍。
查看全部 -
append()方法總是將元素添加到list的尾部。 指定插入位置,需要使用list的insert()方法,insert()方法和append()方法不一樣,insert()方法需要兩個參數,分別是需要插入的位置,以及需要插入的元素。查看全部
-
函數參數可以是任意的數據類型,只要函數內部邏輯可以處理即可。
但是,有時候由于函數的實現關系,需要特定的參數,就比如前面實現的求絕對值的函數my_abs(),如果傳遞一個字符串,就會引起錯誤。
為了保證函數的正常運行,有時候需要對函數入參進行類型的校驗,Python提供isinstance()函數,可以判斷參數類型,它接收兩個參數,第一個是需要判斷的參數,第二個是類型:
isinstance(100, int) # ==> True
isinstance(100.0, int) # ==> False
isinstance('3.1415926', str) # ==> True有了isinstance,就可以優化my_abs函數,不在里面運行出錯了。
def my_abs(x):
? ?if not isinstance(x, int) or not isinstance(x, float):
? ? ? ?print('param type error.')
? ? ? ?return None
? ?if x >= 0:
? ? ? ?return x
? ?else:
? ? ? ?return -x查看全部 -
如果在一個函數內部調用其自身,這個函數就是?遞歸函數?。
舉個例子,我們來計算階乘 n! = 1 * 2 * 3 * ... * n,用函數 fact(n)表示,可以看出:fact(n) = n! = 1 * 2 * 3 * ... * (n-1) * n = (n-1)! * n = fact(n-1) * n
所以,fact(n)可以表示為 n * fact(n-1),只有n=1時需要特殊處理:
def fact(n):
? ?if n==1:
? ? ? ?return 1
? ?return n * fact(n - 1)
這個fact(n)就是遞歸函數理論上,所有的遞歸函數都可以寫成循環的方式,但循環的邏輯不如遞歸清晰。
注:使用遞歸函數需要注意防止棧溢出。
查看全部 -
有時候函數是沒有返回結果的,這個時候從函數獲取到的是一個空值None。
def list_sum(l):
? ?result = 0
? ?for num in l:
? ? ? ?result = result + num
? ?print('result is {}'.format(result))
? ?return
l = [1, 3, 5, 7, 9, 11]
result =list_sum(l) # 調用定義的sum_list函數并獲得return返回的結果
print(result) # ==> None除了返回None、一個值以外,函數也可以返回多個值,在函數中,如果需要返回多個值,多個值之間使用逗號 ',' 分隔即可,但是需要注意順序。
def data_of_square(side):
? ?C = 4 * side
? ?S = side * side
? ?return C, S
C, S = data_of_square(16)
print('周長 = {}'.format(C)) # ==> 周長 = 64
print('面積 = {}'.format(S)) # ==> 面積 = 256也可以使用一個值存儲函數返回的多值結果:
result = data_of_square(16)
print(result) # ==> (64, 256)注意打印的result,其實它是tuple類型,如果我們需要取出結果中的周長或者面積,使用對應位置的下標就可以獲得對應的結果。
查看全部 -
while循環可以繼續進行下去的條件更加簡單,只需要判斷while循環的條件是否為True即可,當條件為True時,即繼續運行下去。查看全部
-
在Python中,定義一個函數要使用 def 語句
依次寫出函數名、括號()、括號中的參數和冒號?:?
然后,在縮進塊中編寫函數體,函數的返回值用 return 語句返回。
我們以定義一個求絕對值的函數my_abs函數為例:def my_abs(x):
??? if x >= 0:? ? ? return x
??? else:? ? ? ?return -xreturn表示返回的意思,函數體內部的語句在執行時,一旦執行到return時,函數就執行完畢,并將結果返回。
查看全部 -
但是r'...'表示法不能表示多行字符串,也不能表示包含'和 "的字符串。 如果要表示多行字符串,可以用'''...'''表示查看全部
-
# Enter a code
L = [[1, 2, 3], [5, 3, 2], [7, 3, 2]]
area1 = L[0][0]*L[0][1]*2+L[0][0]*L[0][2]*+L[0][1]*L[0][2]*2
area2 = L[1][0]*L[1][1]*2+L[1][0]*L[1][2]*+L[1][1]*L[1][2]*2
area3 = L[2][0]*L[2][1]*2+L[2][0]*L[2][2]*+L[2][1]*L[2][2]*2
print(area1)
print(area2)
print(area3)
查看全部 -
這個時候得到的就是一個二維list,對于二維list,列表里面的每一個元素仍然是一個列表。這個時候,如果需要從二維list all_scores獲取Bob最近第三次考試的成績,可以這樣寫
alice_scores?=?[100,89,92] bob_scores?=?[70,65,81] candy_scores?=?[88,72,77] all_scores?=?[alice_scores,?bob_scores,?candy_scores] score?=?all_scores[1][2]?#?==>?81
其中all_scores[1]得到Bob的最近三次成績的列表,再通過下標[2],則可以得到Bob第三次的成績。
查看全部 -
假如班上同學Candy需要轉走了,同時有一個新的同學Canlina轉入,那么按照字母排序,Canlina的位置恰好是Candy的位置。
L?=?['Alice',?'Bob',?'Candy',?'David',?'Ellena'] L[2]?=?'Canlina' print(L)
我們也可以使用倒序索引來完成同樣的功能。
L?=?['Alice',?'Bob',?'Candy',?'David',?'Ellena'] L[-3]?=?'Canlina' print(L)
注意,如果替換一個不存在的下標,則同樣會引起Python運行錯誤。
L?=?['Alice',?'Bob',?'Candy',?'David',?'Ellena'] L[6]?=?'Canlina' Traceback?(most?recent?call?last): ??File?"<stdin>",?line?1,?in?<module> IndexError:?list?assignment?index?out?of?range
查看全部 -
這個時候我們可以使用列表的pop()方法,pop()方法默認刪除列表的最后一個元素,并返回。
L?=?['Alice',?'Bob',?'Candy',?'David',?'Ellena'] name?=?L.pop() print(name)?#?==>?Ellena print(L)?#?==>?L?=?['Alice',?'Bob',?'Candy',?'David']
pop()方法,除了可以刪除最后一個元素以外,pop()還可以接收一個參數,指定需要刪除的元素的位置。
L?=?['Alice',?'Bob',?'Candy',?'David',?'Ellena'] name?=?L.pop(2) print(name)?#?==>?Candy print(L)?#?==>?['Alice',?'Bob',?'David',?'Ellena']
查看全部 -
list的insert()方法,insert()方法和append()方法不一樣,insert()方法需要兩個參數,分別是需要插入的位置,以及需要插入的元素。
names?=?['Alice',?'Bob',?'David',?'Ellena'] names.insert(2,?'Candy') print(names)?#?==>?['Alice',?'Bob',?'Candy',?'David',?'Ellena']
注意,將Candy插入到第三的位置之后,原來的名字,都將自動往后移動一位,這個時候再使用相同的索引獲取后面的元素,將會得到不一樣的結果。
names?=?['Alice',?'Bob',?'David',?'Ellena'] print(names[2])?#?==>?David names.insert(2,?'Candy') print(names[2])?#?==>Candy
查看全部
舉報