2018-12-29 day5 list 總結(jié)

02learn_list

1. 什么是列表(list)

列表是python提供的容器型數(shù)據(jù)類型??勺儾⑶矣行虻?br> 可變 - 列表中的每個(gè)元素的值可變,列表的長度可變,列表中元素的順序可變 (支持增刪改查)
有序 - 每個(gè)元素可以通過下標(biāo)來確定位置

列表的字面量:通過[]括起來,里面有多個(gè)元素,每個(gè)元素用逗號隔開;

[1,2,3]
[10,'abc',True]
num = 100; [num,200]
[] -- 空列表

注意:列表元素的類型可以是任何python支持的數(shù)據(jù)類型;并且同一列表中不同元素的類型可以不一樣

任何類型的數(shù)據(jù)都可以作為列表的元素

list1 = [90, 10.34, 'abc', True, [1, 2, 3], {'a': 10}, lambda x : 2*x ]
print(len(list1))

list2 = [
    90,
    10.34,
    'hello',
    {'name': 'xiaoming'}
]

a = 10
list3 = [a, 20]
print(list3)

2.獲取列表元素(和字符串獲取字符的語法一樣)

"""
a. 獲取單個(gè)元素
列表[下標(biāo)] - 獲取列表中指定下標(biāo)的元素

list1 = [1, 20, 40, 'abc']
print(list1[0], list1[-1])

b. 獲取部分元素(切片) - 結(jié)果是列表
列表[開始下標(biāo):結(jié)束下標(biāo):步長]

注意:取不到的時(shí)候,結(jié)果是空列表

movies = ['毒液', '功夫熊貓', '肖申克的救贖', '這個(gè)殺手不太冷', '拯救大兵瑞恩']
print(movies[1:3])            # [ '功夫熊貓', '肖申克的救贖']
print(movies[1:5:2])         # ['功夫熊貓', '這個(gè)殺手不太冷']
print(movies[3:-3:-1])         # [ '這個(gè)殺手不太冷']
print(movies[3:-3:1])          # [] --> 取不到,在列表里是空列表
print(movies[:2])            # ['毒液', '功夫熊貓']
print(movies[2:])             # ['肖申克的救贖', '這個(gè)殺手不太冷', '拯救大兵瑞恩']
print(moveis[::-1])           # 列表中的元素倒序

c. 一個(gè)一個(gè)的取出所有元素(遍歷)
可以使用for循環(huán)直接遍歷列表拿到每個(gè)元素;(操作元素的時(shí)候和下標(biāo)無關(guān))
可以通過遍歷列表元素對應(yīng)的下標(biāo)來遍歷列表元素;(操作元素的時(shí)候和下標(biāo)有關(guān))

直接遍歷
for item in  movies:
    print(item)
通過遍歷下標(biāo)遍歷
for index in range(len(movies)):
    print('下標(biāo):',index)
    print(movies[index])

示例:

練習(xí):統(tǒng)計(jì)一個(gè)班的學(xué)生的成績[90, 80,80, 70, 98, 67],存到一個(gè)列表中。求整個(gè)班的學(xué)生的平均成績
打印出平均成績
scores = [90, 80,80, 70, 98, 67]
num = len(scores)
total = 0
for score in scores:
    total += score
print(total/num)

030addDelUpdate

1.增(添加列表元素)

a. append
列表.append(元素) - 在指定的列表的最后添加指定的元素(注意:整個(gè)操作不會產(chǎn)生新的列表)

b. insert
列表.insert(下標(biāo),元素) - 在指定的下標(biāo)前插入指定的元素

2. 刪除元素

a. del
del 列表[下標(biāo)] - 刪除列表中指定下標(biāo)對應(yīng)的元素

注意:del是python中的關(guān)鍵字,可以用它刪除任何數(shù)據(jù) 這兒的下標(biāo)不能越界

b. remove
列表.remove(元素) - 刪除列表中第一個(gè)指定元素

注意:被刪除的元素在列表中必須是存在的

c.pop
列表.pop() - 將列表中最后一個(gè)元素從列表中取出,會返回取出來的元素
列表.pop(下標(biāo)) - 將列表中指定下標(biāo)對應(yīng)的元素從列表中取出,會返回取出來的元素

坑一:遍歷列表刪除部分元素,刪不全! --- 遍歷的時(shí)候?qū)υ斜砬衅?/h2>

示例:

刪除列表中小于18的元素
ages = [12, 13, 20, 18, 30]
temp = ages[:]     # 這步是重點(diǎn)
for age in temp:  
    if age < 18:
        ages.remove(age)
print(ages)

上一段代碼簡寫:
ages = [12, 13, 20, 18, 30]
for age in ages[:]:         # 這步是重點(diǎn)
    if age < 18:
        ages.remove(age)
print(ages)

坑二:通過下標(biāo)遍歷列表,刪除元素的時(shí)候,下標(biāo)越界和元素獲取不全

解決辦法:下標(biāo)對應(yīng)的元素需要刪除,下標(biāo)值不動;不會刪除下標(biāo)加1

示例:

將小于18歲的拎出來,存到一個(gè)新的列表中
ages = [12, 13, 20, 18, 30, 10]
new_ages = []  # 保存被刪除的元素
index = 0
while index < len(ages):
    age = ages[index]
    if age < 18:
        del_item = ages.pop(index)
        new_ages.append(del_item)
    else:
        index += 1     # 不需要刪除的時(shí)候下標(biāo)才增加

print(ages, new_ages)

3. 改(修改元素的值)

列表[下標(biāo)] = 新值 -- 修改列表中指定下標(biāo)對應(yīng)的值
示例:

練習(xí):有一個(gè)列表中保存的是學(xué)生的成績,要求將列表中成績小于60分的改成'下一個(gè)班見',
并且統(tǒng)計(jì)下一個(gè)班見的學(xué)生的個(gè)數(shù)
scores = [90, 78, 50, 77,  23, 82, 45]
count = 0
for index in range(len(scores)):
    if scores[index] < 60:
        scores[index] = '下一個(gè)班見'
        count += 1
print(scores)
print(count)

04listOperation

1.相關(guān)運(yùn)算:

a. 數(shù)學(xué)運(yùn)算:+, *
列表1 + 列表2 - 將兩個(gè)列表中的元素合并在一起產(chǎn)生一個(gè)新的列表
列表*N - 列表中的元素重復(fù)N次,產(chǎn)生一個(gè)新的列表

b. 支持比較運(yùn)算
比較大小的原理和字符串類似

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
print(list1 + list2, list1)
print(list1 * 2)

2. in / not in

元素 in 列表 - 判斷列表中是否存在指定的元素

print([1, 2] in [1, 2, 3])               # False
print([1, 2] in [[1, 2], 33, 'afs'])       #True
print('abc' in [10, 'abc', True])        #True

3. len

len(列表) - 獲取列表中元素的個(gè)數(shù)

4. list

list(數(shù)據(jù)) - 將其他類型數(shù)據(jù)轉(zhuǎn)換成列表;只有序列才可以轉(zhuǎn)換成列表,并且所有的序列都能轉(zhuǎn)換成列表;
轉(zhuǎn)換的時(shí)候就是講序列中所有的元素轉(zhuǎn)換成列表的元素

注意: 不能用python給我們提供的類型的名字來命名,否則會有隱患

list1 = list('hello')
print(list1)
list2 = list(range(11, 21))
print(list2)

5.序列其他方法

max(序列) - 獲取序列中值最大的元素
min(序列) - 獲取序列中值最小的元素
sum(序列) - 求序列中所有元素的和

注意:以上三個(gè)方法,要求序列中的元素類型必須一致,并且這個(gè)類型支持比較運(yùn)算和加法運(yùn)算(一般數(shù)字序列用)

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

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