一、復(fù)習(xí)
1.分支結(jié)構(gòu)
if 的用法:
if 條件語句:
代碼段
if - else 的用法:
if 條件語句:
代碼段1
else:
代碼段2
if - elif else 的用法:
if 條件語句1:
代碼段1
elif 條件語句2:
代碼段2
elif 條件語句3:
代碼段3
······
else:
代碼段4
2.循環(huán)結(jié)構(gòu)
for - in 的用法:
for 變量 in 序列:
循環(huán)體
循環(huán):字符串、range、列表、字典、元組、集合、迭代器、生成器
在 python3.x 的時(shí)候?yàn)椋簉ange();在 python2.x 的時(shí)候?yàn)椋簒.range();
while 的用法:
while 條件語句:
循環(huán)體
遍歷序列、循環(huán)次數(shù)確定時(shí),用 for 循環(huán);
循環(huán)次數(shù)確定時(shí),用 while 循環(huán)。
關(guān)鍵字:continue、break、else
coutinue:結(jié)束當(dāng)前循環(huán),進(jìn)入下一次循環(huán)的判斷;
break:結(jié)束整個(gè)循環(huán);
else:循環(huán)正常死亡時(shí),執(zhí)行 else 里面的代碼段
二、了解列表
1.什么是列表(list)
列表是python中提供的容器型數(shù)據(jù)類型,相對(duì)字符串更靈活。是 可變 并且 有序的 。
可變 -----列表中每個(gè)元素的值可變,列表長度可變,列表中元素順序可變。(支持增加、刪除、改變)
有序 -----列表中每個(gè)元素可以通過下標(biāo)來確定元素的位置。
例如:
聲明一個(gè)列表,可以保存公司所有員工的名字。
name = ['張三', '李四', '王五']
print(name)
運(yùn)行效果:
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day6.list 12.29/02、know list 12.29.py"
['張三', '李四', '王五']
2.列表的字面量:;
通過[]括起來,里面有多個(gè)元素,每個(gè)元素用逗號(hào)隔開:
[1, 2, 3, 'adc', True]
num = 100; [num, 200]
[] -----空列表。
注意:列表元素的類型可以為任何python中支持的數(shù)據(jù)類型;并且同一個(gè)列表中不同元素的類型可以不一樣。
任何數(shù)據(jù)都可以作為列表中的元素:
例如:
list1 = [123, 4.56, 'adc', True, [1, 2, 3], {'name' : '阿黃'}, lambda x: 2 * x]
list2 = [
123,
4.56,
'adc',
True,
[1, 2, 3],
{'name' : '阿黃'},
lambda x: 2 * x
]
a = [1, 2, 3]
list3 = [a, 4]
print(list3)
運(yùn)行效果:
[[1, 2, 3], 4]
2.獲取列表元素(與字符串獲取字符的語法一樣)
a.獲取單個(gè)元素:
列表[下標(biāo)] -----獲取列表中指定下標(biāo)對(duì)應(yīng)的元素。
例如:
list4 = [10, 20, 30, 40, 'adc']
print(list4[0], list4[-1])
運(yùn)行效果:
10 adc
b.獲取部分元素(切片): -----結(jié)果是列表。
列表[開始下標(biāo) : 結(jié)束下標(biāo) : 步長] -----取不到結(jié)束下標(biāo)。
注意:取不到的時(shí)候,結(jié)果為空列表。
例如:
list5 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list5[2: 4]) # [2, 3]
print(list5[1: 5: 2]) # [1, 3]
print(list5[2: -2: -1]) # []
print(list5[: 2]) # [0, 1]
print(list5[2:: -1]) # [2, 1, 0]
print(list5[:: -1]) # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
運(yùn)行效果:
[2, 3]
[1, 3]
[]
[0, 1]
[2, 1, 0]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
c.一個(gè)一個(gè)的取出所有的元素(遍歷)
可以直接使用 for 循環(huán)直接遍歷列表,拿到每個(gè)元素;(操作元素時(shí)與下標(biāo)無關(guān)時(shí))
也可以通過遍歷下標(biāo),來拿到列表元素,再遍歷。(操作元素時(shí)與下標(biāo)有關(guān)時(shí))
例如:
for i in list5:
print('列表第 %i 個(gè)元素為:' % i, i)
for i in range(len(list5)):
print('下標(biāo):', i)
print('里面的元素為:', list5[i])
運(yùn)行效果:
列表第 0 個(gè)元素為: 0
列表第 1 個(gè)元素為: 1
列表第 2 個(gè)元素為: 2
列表第 3 個(gè)元素為: 3
列表第 4 個(gè)元素為: 4
列表第 5 個(gè)元素為: 5
列表第 6 個(gè)元素為: 6
列表第 7 個(gè)元素為: 7
列表第 8 個(gè)元素為: 8
列表第 9 個(gè)元素為: 9
下標(biāo): 0
里面的元素為: 0
下標(biāo): 1
里面的元素為: 1
下標(biāo): 2
里面的元素為: 2
下標(biāo): 3
里面的元素為: 3
下標(biāo): 4
里面的元素為: 4
下標(biāo): 5
里面的元素為: 5
下標(biāo): 6
里面的元素為: 6
下標(biāo): 7
里面的元素為: 7
下標(biāo): 8
里面的元素為: 8
下標(biāo): 9
里面的元素為: 9
練習(xí):求整個(gè)班的平均成績。
cj = [50, 60, 70, 80, 90, 100]
sum1 = 0
print('這個(gè)班的成績?yōu)椋?, cj)
for i in range(len(cj)):
sum1 += cj[i]
print('這個(gè)班的平均成績?yōu)椋?, sum1 / len(cj))
運(yùn)行效果:
這個(gè)班的成績?yōu)椋?[50, 60, 70, 80, 90, 100]
這個(gè)班的平均成績?yōu)椋?75.0
三、列表的增加、刪除、修改
1.增加(添加列表元素):
a.append:
列表.append(元素) -----在指定的列表最后,添加指定的元素。
注意:不會(huì)產(chǎn)生新的列表,修改的是原列表。
例如:
list1 = ['0','1','2','3','4']
list1.append('5')
print(list1)
運(yùn)行效果:
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day6.list 12.29/03、add and delete and update 12.29.py"
['0', '1', '2', '3', '4', '5']
b.insert
列表.insert(下標(biāo), 元素) -----在指定的下標(biāo)前,插入指定的元素。
例如:
list1.insert(3, '這是插入')
print(list1)
運(yùn)行效果:
['0', '1', '2', '這是插入', '3', '4', '5']
2.刪除(刪除元素)
a.del -----python中的關(guān)鍵字,可以用它刪除任何數(shù)據(jù)。
del 列表[下標(biāo)] -----刪除列表中指定下標(biāo)所對(duì)應(yīng)的元素,下標(biāo)不能越界,不然會(huì)報(bào)錯(cuò)。
del list1[3]
print(list1)
運(yùn)行效果:
['0', '1', '2', '3', '4', '5']
b.remove
列表.remove(元素) -----刪除列表中指定的元素。
注意:若有多個(gè)相同,只刪除第一個(gè)元素;要?jiǎng)h除元素若不存在列表中,會(huì)報(bào)錯(cuò)。
c.pop
列表.pop() -----將列表中最后一個(gè)元素,在列表中取出。
列表.pop(下標(biāo)) -----將列表中指定下標(biāo)的元素,在列表中取出。
注意:與 del 和 remove 不同,雖然已經(jīng)不在列表里面,但是可以保存在內(nèi)存里面。
例如:
str1 = list1.pop()
print(str1, list1)
list1.pop(0)
print(list1)
運(yùn)行效果:
5 ['0', '1', '2', '3', '4']
['1', '2', '3', '4']
練習(xí):用一個(gè)列表統(tǒng)計(jì)一個(gè)班的年齡(控制臺(tái)不斷輸入年齡的值,直到輸入 end 為止),然后刪除所有小于18歲的年齡
坑一:遍歷列表刪除部分元素,刪不全! -----解決方法:循環(huán)時(shí)遍歷的是原列表的切片(返回一個(gè)新列表)
age = input('請(qǐng)輸入年齡:')
ages = []
while age != 'end':
ages.append(int(age))
age = input('請(qǐng)輸入下一個(gè)年齡:')
for age in ages[:]:
if age < 18:
ages.remove(age)
print('年齡:', ages)
運(yùn)行效果:
請(qǐng)輸入年齡:12
請(qǐng)輸入下一個(gè)年齡:13
請(qǐng)輸入下一個(gè)年齡:18
請(qǐng)輸入下一個(gè)年齡:19
請(qǐng)輸入下一個(gè)年齡:end
年齡: [18, 19]
練習(xí):將小于 18 歲的取出來
坑二:通過下標(biāo)遍歷列表,取出元素的時(shí)候,下標(biāo)越界和元素獲取不全
解決方法:下標(biāo)對(duì)應(yīng)的元素需要?jiǎng)h除,下標(biāo)不動(dòng);不會(huì)刪除下標(biāo)加1
age = input('請(qǐng)輸入年齡:')
ages = []
while age != 'end':
ages.append(int(age))
age = input('請(qǐng)輸入下一個(gè)年齡:')
i = 0
while i <= len(ages):
nl = ages[i]
if nl < 18:
nl = ages.pop(i)
print('小于18的年齡有:', nl)
i += 1
運(yùn)行效果:
請(qǐng)輸入年齡:12
請(qǐng)輸入下一個(gè)年齡:15
請(qǐng)輸入下一個(gè)年齡:17
請(qǐng)輸入下一個(gè)年齡:19
請(qǐng)輸入下一個(gè)年齡:21
請(qǐng)輸入下一個(gè)年齡:end
小于18的年齡有: 12
小于18的年齡有: 17
3.修改(修改元素的值)
列表[下標(biāo)] = 新值 -----修改列表中指定下標(biāo)的值
例如:
lis2 = [1, 2, 3, 4]
lis2[0] = 0
print(lis2)
運(yùn)行效果:
[0, 2, 3, 4]
練習(xí):有一個(gè)列表中保存的是學(xué)生的成績,要求將列表中成績小于60分的改成'下一個(gè)班見',并且統(tǒng)計(jì)留級(jí)的有多少人。
lj = 0
zcj = [56, 57, 58, 59, 60, 61, 62, 63]
for i in range(len(zcj)):
if zcj[i] < 60:
zcj[i] = '下一個(gè)班見'
lj += 1
print(zcj, '\n留級(jí)的有:', lj, '人')
運(yùn)行效果:
['下一個(gè)班見', '下一個(gè)班見', '下一個(gè)班見', '下一個(gè)班見', 60, 61, 62, 63]
留級(jí)的有: 4 人
四、列表的相關(guān)運(yùn)算
1.相關(guān)運(yùn)算:
a.+, *(數(shù)學(xué)運(yùn)算)
列表1 + 列表2 -----將兩個(gè)列表中的元素合并在一起,產(chǎn)生一個(gè)新的列表;原列表值不變。
列表1 * N -----將兩個(gè)列表中的元素重復(fù) N 次,產(chǎn)生一個(gè)新的列表;原列表值不變。
b.支持比較運(yùn)算
列表1 == 列表2 -----判斷真假,返回一個(gè)布爾值。
列表1 > 列表2 -----比較大?。ū容^原理與字符串類似),判斷真假,返回一個(gè)布爾值;只有類型一樣的時(shí)候才能比較。
2.in / not in
元素 in 列表 -----判斷列表中是否存在指定的元素
例如:
print([1, 2] in [1, 2, 3]) # 結(jié)果為 False
print([1, 2] in [[1, 2], 'adc', '+']) # 結(jié)果為 True
print('adc' in [1, 'adc', False]) # 結(jié)果為 True
運(yùn)行效果:
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day6.list 12.29/04、list operation 12.29.py"
False
True
True
3.len()
len(列表) -----獲取序列中元素的個(gè)數(shù)。
4.list
list(數(shù)據(jù)) -----將序列數(shù)據(jù)轉(zhuǎn)換成列表。(只有序列才能轉(zhuǎn)換)將序列中所有的元素轉(zhuǎn)換成列表的元素。
注意:不能用python給我們提供的類型的名字來做變量,在使用該類型的時(shí)候會(huì)報(bào)錯(cuò)。
5.序列的其它方法
max() -----獲取序列中值最大的元素
min() -----獲取序列中值最大的元素
sum() ----- 求序列中所有元素的和
注意:以上三個(gè)方法,要求序列中的元素類型必須一致,并且這個(gè)類型支持比較運(yùn)算和甲方運(yùn)算。(一般是數(shù)字序列用)
例如:
print(max([20, 30, 40, 50.50]))
print(min([20, 30, 40, 50.50]))
print(sum([20, 30, 40, 50.50]))
運(yùn)行效果:
50.5
20
140.5
Process finished with exit code 0