python學習之路04——列表和字典

來源:互聯網
上載者:User

標籤:lis   ==   2.3   問題:   重複元素   求年齡   尋找   max   排序   

列表和字典

python中的可變資料類型有:列表和字典 不可變類型:數字,字串,元組今天先講列表和字典

一.列表

1.概念:
變數:使用變數儲存資料,但是,變數儲存資料每次只能儲存一個資料
問題:如果要一次性儲存多個資料的,該怎麼做?
#需求:儲存5個人的年齡,求年齡的平均值
age1 = 10
age2 = 15
age3 = 30
age4 = 17
age5 = 24
avg = (age1 + age2 + age3 + age4 + age5) / 5
解決辦法:採用列表
作用:相當於一個容器,可以同時儲存多個資料
本質:列表是一種有序的集合
說明:有序指的是有順序【儲存的存放順序和在記憶體中儲存的順序是相同的】
2.建立列表:num = 10
文法:變數名 = 列表
? 列表名稱 = [資料1,資料2.。。。。]
說明:
? a.通過[]定義列表
? b.列表中儲存的資料被稱為元素
? c.列表中的元素會從頭到尾進行編號,編號從0開始,這個編號被稱為索引,角標或者下標
? d.索引的取值範圍:0~列表中元素的個數 - 1 【0~列表的長度- 1】
? e.超過索引的範圍:列表的索引越界
3.列表中元素的訪問3.1 取值
代碼示範:
#元素的訪問
#1.取值
#文法:列表名[索引]
#索引:0~4
list1 = [543,5,46,56,6]
num1 = list1[2]
print(list1[2])
print(num1)
#清單索引越界
#print(list1[-10]) #IndexError: list index out of range
#print(list1[5])
3.2.替換值
#文法:列表名[索引] = 新值【列表中的元素本質上是一個變數,所以替換之的操作其實就是給變數重新賦值】
list1[2] = 100
print(list1[2])
4.列表中的操作
代碼示範:
#列表的操作
#1.列表組合:+
list1 = [54,5,45,4]
list2 = ["abc","fhj","ghfjg"]
#列表的組合并沒有修改原來的列表,而是產生了一個新的列表
list3 = list1 + list2
print(list3)
print(list1)
print(list2)
#2.列表元素重複:*
#2.1列表中可以儲存重複元素
l1 = [20,20,40,45,54,20]
print(l1)
#2.2
l2 = [10,20,30]
l3 = l2 * 3
print(l3)
?#3.判斷元素是否在列表中:成員運算子[int not in]
#注意:成員運算子運算的結果為布爾值
#一般結合if語句使用
l4 = [34,54,56,"anc"]
print(34 in l4)
print(34 not in l4)
print(100 in l4)
print(100 not in l4)
"""
True
False
False
True
#4.列表的截取【切片】
#4.1截取指定的區間:列表名[開始索引:結束索引]
#特點:涉及到區間,包頭不包尾 前閉後開區間:[2,4)
l5 = [34,54,56,"anc",5,65,76,7677]
print(l5[2:4])
#4.2從開頭截取到指定位置
print(l5[0:5])
print(l5[:5])
#4.3從指定位置截取到結尾
print(l5[3:7])
print(l5[3:])
#注意;如果要取到最後一個元素,可以超過索引的範圍,在這種情況下不會報錯
print(l5[3:20])
5.列表的功能
文法:列表名.功能名()
#1.添加元素
#1.1 append():在列表元素的末尾追加元素
list11 = [10,20,30]
print(list11)
#追加單個元素
list11.append(40)
print(list11)
#追加多個元素
#list11.append(50,60) #錯誤示範
#注意:使用append功能,追加多個元素,不能直接追加,通過列表的形式追加
list11.append([50,60])
print(list11)
#1.2 extend():擴充,在列表的末尾添加元素
list12 = [10,20,30]
print(list12)
#追加單個元素
#list12.extend(40) #錯誤示範:extend不能直接添加單個元素
# #iterable:可迭代的 iterator
#追加多個元素
#注意:使用extend添加多個元素,仍然採用列表的方式添加,但是,實際上添加的只是元素【打碎添加】
list12.extend([50,60])
print(list12)
print("~~~~~~~~")
#1.3 insert() ;插入,在指定索引處插入元素
#格式:insert(索引,插入的資料)
list13 = [10,20,30]
print(list13)
list13.insert(2,40)
print(list13)
#注意:插入一一個列表,將整個列表插入到原列表中
list13.insert(1,[50,60])
print(list13)
#2.刪除元素
#2.1 pop(索引) ;彈出,移除列表中指定索引處的元素
list21 = [10,20,30,40,50,60]
print(list21)
#pop預設移除的是最後一個元素,得到的結果為被移除的元素
result1 = list21.pop()
print(list21)
print(result1)
#移除指定位置的元素
list21.pop(2)
print(list21)
#2.2 remove(元素) :移除,特點:移除的是列表中的元素【在列表中從0開始能夠匹配到的第一個元素】
list22 = [10,20,30,40,50,60]
print(list22)
list22.remove(10) #等價於list22.pop(0)
print(list22)
#需求:移除列表中所有的數字10
list23 = [10,20,30,40,50,60,10,10,10,10,10,10]
"""list23.remove(10)
print(list23)
list23.remove(10)
print(list23)
list23.remove(10)
print(list23)
"""
num = 0
element = 10
cou = list23.count(element)
while num < cou:
list23.remove(element)
print(list23)
num += 1
print(list23)
?#2.3 clear():清除,清除列表中的所有元素,原列表變為空白列表
list24 = [10,20,30,40,50,60,10,10,10,10,10,10]
list24.clear()
print(list24)
?#3.擷取
#文法:功能名(列表名)
#3.1 len() length,擷取列表的長度【擷取列表中元素的個數】
list31 = [10,20,30,40,50,60,10,10,10,10,10,10]
length = len(list31)
?
#3.2 max();擷取列表中元素的最大值 min() 最小值
print(max(list31))
print(min(list31))
?
#3.3 index() :索引,從列表中匹配到的第一個元素對應的索引值
inx1 = list31.index(10)
print(inx1)
?
#3.4 count();個數,尋找指定元素在列表中出現的次數
c = list31.count(10)
print(c)
?

#4.其他
#4.1 reverse() 反轉,將列表中的元素倒序輸出
list41 = [10,20,30,40,50,60,10,10,10,10,10,10]
list41.reverse()
print(list41)
?
#4.2 sort() 排序,預設為升序排序,注意:在列表的內部操作
#升序
list41.sort()
print(list41)
#降序
list41.sort(reverse=True)
print(list41)
?
#sorted() 排序,預設為升序排序,注意:產生一個新的列表
list42 = [10,20,30,40,50,60,10,10,10,10,10,10]
#升序
newList1 = sorted(list42)
print(list42)
print(newList1)
#降序
newList2 = sorted(list42,reverse=True)
print(newList2)
?
#按照長度排序
list43 = ["fhjdhf","g","gfg"]
newList3 = sorted(list43,key=len)
print(newList3)
?
#4.3 拷貝【面試題】
#淺拷貝
#深拷貝
#a.從記憶體的角度
#淺拷貝:引用【棧空間】
list44 = [23,45,98]
list45 = list44
list45[1] = 100
print(list44)
print(list45)
print(id(list44) == id(list45))
?
?
#深拷貝:記憶體【實體,堆空間】
list51 = [23,45,98]
list52= list51.copy()
list52[1] = 100
print(list51)
print(list52)
print(id(list51) == id(list52))

二.字典

1.概念:
思考問題:儲存多個學生的成績
解決方案:字典,將學生作為key,將成績作為value,進行儲存,方便尋找【一一對應】
本質:也是一種儲存資料的容器
特點:資料以索引值對的形式儲存的,具有快速尋找的優勢
注意:字典是無序的
key的特點
:? a.字典中的key必須是唯一的
? b.字典中的key必須是不可變的
? list是可變的,不能充當key
? tuple是不可變的,可以充當key,數字型和字串都可以充當key
2.建立:
文法:字典名稱 = {key1:value1,key2:value2.....}
代碼示範:
#1.建立字典
#建立一個空字典
dict1 = {}
#建立有索引值對的字典
dict2 = {"zhangsan":60,"jack":90}
print(dict2)
3.方法:
1 擷取key:文法 字典名.key
2 擷取value:文法 字典名.value
3 修改或者添加:文法:字典名[key]=value, 如果存在key則修改,否則添加新的索引值對
4 刪除:文法:字典名.pop(key)刪除指定的 popitem()時刪除字典中最後一個

python學習之路04——列表和字典

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.