-
一維list并不能滿足所有的要求(上述所有list均為一維list),這個時候需要二維list甚至更高維的list。
任務:
# 有三個長方體,他們的長寬高分別是[1, 2, 3], [5, 3, 2], [7, 3, 2],定義在數組L中,L = [[1, 2, 3], [5, 3, 2], [7, 3, 2]],請分別求出三個長方體的表面積。
# Enter a code
L = [[1, 2, 3], [5, 3, 2], [7, 3, 2]]
area = []
for i in range(3):
? ? x = 1
? ? for j in L[i]:
? ? ? ? x *= j
? ? area.append(x)
print(area)
查看全部 -
列表已有的元素,也是可以修改的,通過索引指定位置,并賦值新的元素,即可替換列表中原有的元素。
L[2] = 'Canlina'
L[-3] = 'Canlina'
如果替換一個不存在的下標,則同樣會引起Python運行錯誤。IndexError: list assignment index out of range.
任務:
# 班上某次考試,['Alice', 'Bob', 'Candy', 'David', 'Ellena'] 的成績分別是 89, 72, 88, 79, 99,請按照成績高低,重新排列list中同學名字的順序。
# Enter a code
L = [['Alice', 'Bob', 'Candy', 'David', 'Ellena'], [89, 72, 88, 79, 99]]
print(L)
# 冒泡排序法:
for i in range(5):
? ? for j in range(5-i-1):
? ? ? ? if L[1][j] < L[1][j+1]:
????????????# 排成績?
? ? ? ? ? ? x = L[1][j]
? ? ? ? ? ? L[1][j] = L[1][j+1]
? ? ? ? ? ? L[1][j+1] = x
????????????# 排名字
? ? ? ? ? ? y = L[0][j]
? ? ? ? ? ? L[0][j] = L[0][j+1]
? ? ? ? ? ? L[0][j+1] = y
print(L)
查看全部 -
使用列表的pop()方法,pop()方法默認刪除列表的最后一個元素。
name = L.pop()
pop()還可以接收一個參數,指定需要刪除的元素的位置。
name = L.pop(2)
任務:
# L = ['Alice', 'Bob', 'Candy', 'David', 'Ellena'],由于Candy,David依次轉學,某同學寫出以下代碼,請判斷以下代碼是否可以正常運行?如果不可以,為什么?請幫忙修正。
# Enter a code
L = ['Alice', 'Bob', 'Candy', 'David', 'Ellena']
L.pop(2)
L.pop(2)
print(L)
查看全部 -
添加元素的方法:
1.用append()方法,把新元素加到列表的末尾。
names.append('Candy')
注意:append()方法總是將元素添加到list的尾部。
2.用insert()方法,insert()方法需要兩個參數,分別是需要插入的位置,以及需要插入的元素。
任務:
# 班上已有同學['Alice', 'Bob', 'Candy', 'David', 'Ellena'],新來報到3名同學分別是'Zero', 'Phoebe', 'Gen',請綜合利用append()方法,insert()方法,把三個同學的名字按首字母順序插入到列表里去。
# Enter a code
names = ['Alice', 'Bob', 'Candy', 'David', 'Ellena']
names.append('Gen')
names.append('Zero')
names.insert(-1, 'Phoebe')
print(names)
查看全部 -
Python的列表,除了支持正向順序索引獲取列表中的每一個元素以外,也支持倒序訪問list中的每一個元素。
在Python中,可以使用-1來表示最后一個元素,越界會報錯。
任務
三名同學的成績可以用一個list表示:L = [95.5, 85, 59, 66, 72],請按照倒序索引的方式分別打印出第一名、第二名、第三名。
# Enter a code
L = [95.5, 85, 59, 66, 72]
L.sort()
print(L[-1], L[-2], L[-3])
查看全部 -
與運算
只有兩個布爾值都為 True 時,計算結果才為 True。
True and True # ==> True
True and False # ==> False
False and True # ==> False
False and False # ==> False或運算
只要有一個布爾值為 True,計算結果就是 True。
True or True # ==> True
True or False # ==> True
False or True # ==> True
False or False # ==> False非運算
把True變為False,或者把False變為True:
not True # ==> False
not False # ==> True這些運算有什么用呢?計算機程序是由無數的邏輯分支組成的,通過布爾運算,可以在計算機中實現條件判斷,根據計算結果為True或者False,計算機可以自動執行不同的后續代碼,因此學習布爾運算也是非常有必要的。
在Python中,布爾類型還可以與其他數據類型(字符串,數字等)做 and、or和not運算,請看下面的代碼:
a = True
print(a and 0 or 99) # ==> 99得到的計算結果不是布爾類型,而是數字99,這是為什么呢?
因為Python把0、空字符串和None看成False,其他數值和非空字符串都看成True,所以:
True and 0計算結果是0?
繼續計算0 or 99計算結果是 99?
因此,結果是99。
需要注意的是,not計算的優先級是高于and和or的。True and not False # ==> True
在上述布爾計算中,先計算not False = True,然后再計算True and True,因此得到True的結果。
短路計算
在計算a and b時,如果 a 是 False,則根據與運算法則,整個結果必定為 False,因此返回 a;如果 a 是 True,則整個計算結果必定取決與 b,因此返回 b。
在計算a or b時,如果 a 是 True,則根據或運算法則,整個計算結果必定為 True,因此返回 a;如果 a 是 False,則整個計算結果必定取決于 b,因此返回 b。
所以Python解釋器在做布爾運算時,只要能提前確定計算結果,它就不會往后算了,直接返回結果。
查看全部 -
取模運算
Python數字支持取模運算,使用百分號%表示取模。
print(3 % 2) # ==> 1
print(33 % 10) # ==> 3
print(99 % 30) # ==> 9恰當使用取模運算,可以判斷一個數是否為偶數,當一個數對2取模結果為0時,則這個數為偶數,否則為奇數。
print(3 % 2) # ==> 1 因此3為奇數
print(33 % 2) # ==> 1 因此33為奇數
print(100 % 2) # ==> 0 因此100為偶數查看全部 -
四則運算可以發現一個規律,整數和浮點數運算后 ,得到的結果不管小數點后是否有值,結果都變成浮點數了,這是合理的,浮點數可以表達整數的結果,但是整數不能表達浮點數的結果。
查看全部 -
變量命名規范
合法的變量名
只是在計算機程序中,變量不僅可以是數字,還可以是任意數據類型(字符串、布爾值、空值、字典等)。在Python中,定義一個變量需要遵循一定的約束,否則,Python可能識別不出它是一個變量。
變量名由大小寫英文字母、數字和下劃線_組成
變量不能用數字開頭
變量盡量不要和Python關鍵字重合(比如前面學習過的:and、or、not,否則可能導致Python原有關鍵字發揮不出作用)
以下這些變量的定義都是合法的。
num, count, _none, min_value
他們都滿足上面的三個條件。
以下這些變量的定義都是不合法的。
1num, 666, 1_cd, and
查看全部 -
空值在python語言中是一個特殊的值。用None表示。注意None和0是不一樣的,None不能理解為0,因為0是有意義的。比如我有0個蘋果,0代表的數值,而不能表示我有None個蘋果,None是一個特殊的空值
查看全部 -
布爾值
在生活中就是對和錯,true和false,布爾值可以用and、or、not這些都屬于python語言自身的關鍵字;
and運算是與運算,只有所有都為 True,and運算結果才是 True。
or運算是或運算,只要其中有一個為 True,or 運算結果就是 True。
not運算是非運算,它是一個單目運算符,把 True 變成 False,False 變成 True。
查看全部 -
字符串
比如之前練習過的第一個Python程序:print('Hello World'),其中的Hello World就是字符串
查看全部 -
浮點數例如 0.1,0.5,12.34,0.000012,在Python中,把10用e替代,比如:1.23x10^9就是1.23e9,或者12.3e8,0.000012可以寫成1.2e-5
查看全部 -
整數例如1,2,3,10,100,1000,-1000等等
查看全部 -
由于列表list是一個有序的容器,所以在list里面,每一個元素都有一個唯一的位置,我們稱之為索引(index),這和字符串是類似的,因此我們也可以通過位置的方式獲取list中的元素,通過中括號[]來按位置訪問對應的元素。
注意:這里要注意區分,列表的定義也是通過中括號[]來定義的,但這和通過索引訪問列表里面的元素并不沖突。
我們在使用索引的方式訪問列表時,一定要特別注意不要越界,否則會引起Python運行的錯誤,提示索引訪問超出范圍。
列表和字符串一樣,也支持切片,通過切片的方式,獲取到列表的子列表。
注意:越界切片的話,不會出現Python運行錯誤,但是按照這樣的下標去切片,獲取不到任何元素。
任務:
# 五名同學的成績可以用一個list表示:L = [95.5, 85, 59, 66, 72],請按照索引的方式分別打印出第一名、第二名、第三名。
# Enter a code
L = [95.5, 85, 59, 66, 72]
L.sort()? ?# 默認升序排序
L.reverse()? ?# 反轉,得到降序排序
print(L)? # [95.5, 85, 72, 66, 59]
print(L[0:3])? #?[95.5, 85, 72]
查看全部
舉報