day06、列表 2018-12-29

一、復(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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,707評(píng)論 0 5
  • 你有一張好陌生的臉, 到今天才看見。 有點(diǎn)心酸在我們之間, 如此短暫的情緣。 看著天空不讓淚流下, 不說一句埋怨。...
    賈小呆520閱讀 549評(píng)論 0 0
  • 戰(zhàn)爭利:促進(jìn)科技發(fā)展少過量人口為國家開闊領(lǐng)土為世界統(tǒng)一而奮斗。 戰(zhàn)爭弊:科技發(fā)展到飽和狀態(tài)就開始形成大規(guī)模毀滅可能...
    天龍神帝閱讀 384評(píng)論 1 0
  • 據(jù)說,向上的路并不擁擠,擁擠是因?yàn)?,大多?shù)人選擇了安逸
    六月的雨Bill閱讀 191評(píng)論 0 0
  • Chapter 4 我從夢里驚醒,發(fā)現(xiàn)自己渾身濕透,汗水浸透了我的衣衫。我看了看時(shí)間,才九點(diǎn),我睡了不到三個(gè)...
    輕繁閱讀 601評(píng)論 0 1

友情鏈接更多精彩內(nèi)容