list(列表)
常規(guī):
列表是python中的容器類型饥臂。有序的街佑,可變的容器(可變指的是列表中的元素和元素的位置、個數(shù)可變)屹徘。
有序 -> 可以通過下標(biāo)來獲取元素
可變 -> 可以進行增刪改(查)
元素:指的是列表中的每一個內(nèi)容走趋。列表中的元素可以是任意類型的數(shù)據(jù)
1.列表的聲明
a.聲明變量賦一個列表的值
聲明了一個列表,列表中有3個元素噪伊,分別是'余婷',18,'女' (一個列表中的元素的類型可以不一樣)
person = ['余婷', 18, '女']
print(person)
注意: [] --> 代表空列表(很有用的)
b.將其他的數(shù)據(jù)類型轉(zhuǎn)換成列表(只有序列才能轉(zhuǎn)換:字符串和range,字典吆视、元祖、集合酥宴、生成式和迭代器)
使用list()
例如:
chars = list('abcdef')
print(chars)
numbers = list(range(10))
print(numbers)
2.列表的增刪改查
1.查: 獲取列表元素
a.獲取單個元素:列表[下標(biāo)]
下標(biāo)范圍:0 ~ 元素個數(shù)-1 或者 -1 ~ -元素個數(shù)
注意: 下標(biāo)不能越界
b.獲取部分元素(切片): 列表[下標(biāo)1:下標(biāo)2] / 列表[下標(biāo)1:下標(biāo)2:步進]
從下標(biāo)1開始獲取下標(biāo)2前為止(注意:下標(biāo)2對應(yīng)的值是取不到)
步進值是正的就從前往后取,步進是負的就從后往前取
結(jié)果是列表;這兒的下標(biāo)可以越界
c.遍歷(一個一個的獲取每個元素)
可以將列表直接放到for循環(huán)的in的后邊您觉。
循環(huán)過程中拙寡,for后面的變量取的是列表中的每個元素
2.改(修改元素的值)
語法: 列表名[下標(biāo)] = 新值 (通過下標(biāo)獲取元素,然后重新賦值)
注意:下標(biāo)不能越界
如:
person = ['小明', 35, '乒乓球']
person[1] = 25
print(person)# 修改person列表中下標(biāo)是1的元素的值琳水,修改為25
3.增(增加列表的元素,添加元素)
注意: 列表中元素的個數(shù)發(fā)生改變后肆糕,列表中每個元素的下標(biāo)會根據(jù)新的位置重新分配
a.列表.append(元素) : 在列表的最后去添加一個元素
list.append('')
b.列表.insert(下標(biāo),元素) : 在指定的下標(biāo)前插入一個元素
list.insert('')
4.刪(刪除列表中的元素)
a. del 列表[下標(biāo)] ---> 根據(jù)下標(biāo)去刪除列表中的元素
del 語句是python中刪除數(shù)據(jù)的語法,它可以刪除任何數(shù)據(jù): del 變量(刪除變量) del 列表(刪除整個列表)
del list[]
b. 列表.remove(元素) ---> 刪除列表中的某個值
注意:如果這個元素在列表中有多個在孝,只刪除最前面的那一個
list.remove()
c. 列表.pop(下標(biāo)) ---> 將列表中指定下標(biāo)對應(yīng)的元素取出來
a=list.pop(1) #將list中下標(biāo)是1對應(yīng)的元素取出來诚啃,保存到變量a中
注意:以后遍歷列表的元素的時候,我們一般遍歷它的拷貝的值([:])
4-列表數(shù)據(jù)的存儲
python中私沮,變量在存數(shù)據(jù)的值的時候始赎,會根據(jù)數(shù)據(jù)類型的不同,使用兩種方式來存值
值類型:變量存數(shù)據(jù)直接存值仔燕,例如:整型造垛、浮點型、布爾晰搀、字符串
引用類型:變量存數(shù)據(jù)的時候五辽,存的是數(shù)據(jù)在內(nèi)存中的地址。例如:列表外恕、字典杆逗、元祖、集合鳞疲、函數(shù)罪郊、自定義的類的對象等!
a1 = [1, 2]
b1 = a1
c1 = a1[:]
print(a1, b1)#[1, 2] [1, 2]
a1.append(100)
print(a1, b1,c1)#[1, 2, 100] [1, 2, 100] [1, 2]
引用類型賦值的時候賦的是地址
先將列表a1中的元素拷貝一份存到一個新的地址中建丧,然后把新的地址賦給c1
當(dāng)b1=a1時b1的地址與a1的地址相等 所以 當(dāng)a1.append(100)時
列表的里的元素增加了 地址沒有變
所以b1 也會增加元素
c1 = a1[:] 代表列表a1中的元素拷貝一份存到一個新的地址中排龄,然后把新的地址賦給c1
所以 當(dāng)a1.append(100)時.c1的地址與a1不相同
并且c1不會增加元素
5-列表相關(guān)的運算
1. +操作
列表1 + 列表2:將列表1中元素和列表2中的元依次合并,產(chǎn)生一個新的列表
2. * 操作
列表1 * N:將列表1中元素重復(fù)N次,產(chǎn)生一個新的列表
3. in / not in
元素 in 列表 : 判斷一個元素是否在列表中
4. 求列表的長度
len(序列)
print(len([1, 2, 3]))#3
5.相關(guān)的方法
5.1 列表.count(元素) :統(tǒng)計指定的元素在指定列表中有幾個
5.2 列表.extend(序列) : 將序列中的元素添加到列表中
5.3 列表.index(元素) : 獲取指定元素對應(yīng)的第一個下標(biāo)
5.4 列表.pop() : 將列表中的最后一個元素從列表中取出來
5.5 列表.reverse() : 將列表中的元素反序
5.6 列表.sort(): 對列表元素進行排序(默認是升序)
擴展:列表.sort(reverse=True): 對列表元素進行降序排序
5.7 列表.clear(): 將列表中的元素全部清除
5.8 列表.copy(): 將列表中的元素全部拷貝一份產(chǎn)生一個新的列表橄维,相當(dāng)于列表[:]尺铣。
注意:這兒的拷貝是淺拷貝
總結(jié):
淺拷貝:只是單純的將值拷貝(如果是對象就直接拷貝對象的地址)
深拷貝:會拷貝對象地址對應(yīng)的值,產(chǎn)生一個新的地址争舞,然后將新的地址進行賦值
6.tuple(元祖)
元祖就是不可變的列表凛忿。列表中除了和可變相關(guān)的內(nèi)容以外,其他的全部適用于元祖
不支持增竞川、刪除店溢、修改,只支持和查相關(guān)的操作
1.聲明元祖
tuple1= (1, 2, 'abc', True, [1, 2])
注意:如果要寫一個元祖元素個數(shù)是1的字面量委乌,需要在那一個元素的后面加逗號
例如:t2 = (100,)
2.() --> 空的元祖
t3 = ()
3.特殊操作
a.通過兩個變量來獲取元祖中的唯一的兩個元素的值
point = (100, 200, 'red')
x, y, color = point
print(x, y)#100,200
b.通過在變量前加*,獲取元祖/列表中的一部分元素值床牧,結(jié)果是一個列表
user = ('小呂', 90, 98, 56, 100, '男')
name, *score, sex = user
print(name, score, sex)#小呂 [90, 98, 56, 100] 男
user2 = ('小紅', 90, 100, 89, 67, 78)
name, *score = user2
print(name, score)#小紅 [90, 100, 89, 67, 78]
*score, name, sex = (89, 98, 78, 67, '小藍', 'boy')
print(score, name, sex)#[89, 98, 78, 67] 小藍 boy
4.多個值之間用逗號隔開,對應(yīng)的數(shù)據(jù)也是元祖
a = 1, 2, 3, 4 # 相當(dāng)于 a = (1, 2, 3, 4, 5)
print(a, type(a))
x, y = 100, 200 # 相當(dāng)于x,y = (100, 200)
print(x, y)