列表
python中的數(shù)據(jù)類型:數(shù)字(不可變)、字符串(不可變)、列表(可變)、元祖(不可變)、字典(可變)、集合(不可變)
容器類型的數(shù)據(jù):列表、元祖、字典、集合(序列)
列表(數(shù)組):一個列表中可以存儲多個不同類型的數(shù)據(jù)
列表存儲數(shù)據(jù)的方式:將多個數(shù)據(jù)放到一個中括號[]里面,多個數(shù)據(jù)之間用逗號隔開
列表特點:列表是可變的(指的是里面的元素的個數(shù)和值是可變的)
中括號[]是列表的標志
-
1.聲明一個列表:
聲明了一個列表list1,有5個元素,分別是1,2,3,10.9,'abc'
list1 = [1, 2, 3, 10.9, 'abc']
print(list1)
聲明一個空的列表
list2 = []
-
2.獲取列表元素
a.獲取單個元素(通過元素獲取下標)
下標的范圍:0元素個數(shù)-1;-1元素個數(shù)
注意:通過下標獲取元素的時候,下標不能越界
list1 = [1, 2, 3, 10.9, 'abc']
print(list1[0]) # 獲取下標是0的元素
print(list1[-1])
print(list1[-2])
b.獲取列表中的部分元素(切片)
列表名[開始下標:結(jié)束下標],列表名[開始下標:結(jié)束下標:步長]
list3 = [2, 10.5, 'aa', 'abc', 10]
print(list3[1:4]) # 獲取到的是1~3下標的值,獲取不到4下標的值
print(list3[:4]) # 從第一個元素開始到下標為3的所有元素
print(list3[2:]) # 獲取從下標是2開始到列表最后的所有元素
print(list3[:]) # 獲取列表開始到結(jié)束的所有元素
print(list3[0:4:2]) # 獲取的是從下標為0開始到下標為3,每2個元素取一個
print(list3[::2]) # 獲取開始到結(jié)束中,下標為偶數(shù)的元素
c.遍歷列表
list4 = [1, 34, 6, 2, 8, 91, 4]
for item in list4:
if item % 2 == 0:
print(item)
sum1=0
for x in list4:
sum1 += x
print(sum1)
使用while循環(huán)
i = 0 # i就是列表元素對應(yīng)的下標
while i < len(list4):
print(list4[i])
i += 1
獲取下標是奇數(shù)的元素
i = 1
while i < len(list4):
print(list4[i])
i += 2
i = 0
while i < len(list4):
if i % 2 == 0:
i += 1
continue
print(list4[i])
i += 1
在列表中添加元素
list1 = []
-
1.append方法:列表名.append(元素)
append是將元素添加到列表的最后
list1.append('abc')
print(list1)
list1.append(10)
print(list1)
練習:找出列表中[1, 34, 5, 6, 89, 3, 2, 4]所有的偶數(shù),并保存起來
list2 = [1, 34, 5, 6, 89, 3, 2, 4]
list3 = []
for x in list2:
if x % 2 == 0:
list3.append(x)
print(list3)
-
2.insert:列表名.insert(下標,元素)
在指定的下標前插入指定的元素
注意:這兒的下標可以越界
list4 = [1, 2, 3, 4, 5, 6, 7, 8]
list4.insert(1, 'a')
print(list4)
通過insert在4和5之間插入元素'b';再在8的后面插入元素'c'
list4 = [1, 2, 3, 4, 5, 6, 7, 8]
list4.insert(4, 'b')
print(list4)
list4.append('c')
print(list4)
list4.insert(8, 'c') # 當下標大于等于列表的長度,會插到列表的最后
print(list4)
-
2.修改元素:通過下標拿到對應(yīng)的元素,然后重新賦值
list1 = [1, 2, 3, 4, 5, 6] list1[1] = 20 print(list1)
list1 = [1, 2, 3, 4, 5, 6]
讓列表的所有元素變?yōu)樵瓉淼?倍
list1[:] = 2, 4, 6, 8, 10, 12
print(list1)
list1 = [1, 2, 3, 4, 5, 6]
for x in range(0, len(list1)):
list1[x] = list1[x] * 2
print(list1)
讓列表中偶數(shù)位的元素變?yōu)樵瓉淼?倍
list1 = [1, 2, 3, 4, 5, 6]
print(list1[::2])
for x in range(0, len(list1)):
list1[x] = list1[x] * 2
print(list1[::2])
刪除元素
-
1.del語句:在python中,del可以刪除任何內(nèi)容
del語句刪除列表元素:del 列表名[下標]
注意:刪除的時候下標也是不能越界
str1 = 'Hello'
list1 = ['a', str1, 10+20, 'b', True]
print(list1)
刪除下標為1的元素
del list1[1]
print(list1)
刪除列表中所有的偶數(shù)
list1 = [1, 2, 3, 4, 5, 6, 7, 8]
出錯
x = (0~7)
x = 0 list1[0] = 1 list = [1, 2, 3, 4, 5, 6, 7, 8]
x = 1 list1[1] = 2 list = [1, 3, 4, 5, 6, 7, 8]
x = 2 list1[2] = 4 list = [1, 3, 5, 6, 7, 8]
x = 3 list1[3] = 6 list = [1, 3, 5, 7, 8]
x = 4 list1[4] = 8 list = [1, 3, 5, 7]
x = 5 list1[5] = 越界
for x in range(0, len(list1)):
if list1[x] % 2 == 0:
del list1[x]
通過下標刪除要注意下標的重新分配的問題
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
x = 0
while x < len(list1):
if list1[x] % 2 == 0:
del list1[x]
else:
x += 1
print(list1)
刪除列表中的字符串
isinstance(變量,類型):判斷指定變量/值是否是指定的類型
str(字符串)、int(整型)、float(浮點型)、bool(布爾)、list(列表)、tuple(元祖)、dict(字典)
re = isinstance('aa', str) # 獲取'aa'是否是字符串
print(re)
list3 = ['a', 1, 20, 'pp', 19.3, 'ohk']
x = 0
while x < len(list3):
if isinstance(list3[x], str):
del list3[x]
else:
x += 1
print(list3)
-
2.通過remove方法刪除指定元素
格式:列表名.remove(元素)
list4 = ['a', 'b', 'c', 1, 2, 3]
list4.remove('c')
print(list4)
如果列表中有多個相同元素,remove只刪除第一個
list4 = ['a', 'b', 'c', 1, 2, 'c']
list4.remove('c')
print(list4)
刪除列表[1, 3, 4, 7, 8, 2, 3, 4, 1]中所有的奇數(shù)
list5 = [1, 3, 4, 7, 8, 2, 3, 4, 1]
x = 0
while x < len(list5):
value = list5[x]
if value % 2 != 0:
list5.remove(value)
else:
x += 1
print(list5)
-
3.使用pop()方法刪除指定下標的元素
格式:列表名.pop(下標) 從列表中取出指定下標對應(yīng)的元素
格式:列表名.pop() 從列表中取出最后一個元素
list6 = [1, 2, 3, 4, 5, 6]
delitem = list6.pop(1) # 將下標是1的元素從list6中取出,并存到delitem中
print(delitem, list6)
del_item = list6.pop()
print(del_item, list6)
將一個列表[1, 2, 3, 4, 5, 6]中的元素全部取出放到另一個列表里面變成[6, 5, 4, 3, 2, 1]
list6 = [1, 2, 3, 4, 5, 6]
list7 = []
while len(list6) > 0:
# 從前往后取
value = list6.pop(0)
list7.insert(0, value)
# 從后往前取
# value = list6.pop()
# list7.append(value)
print(list6)
print(list7)
常用函數(shù)
-
1.求列表的長度
list1 = [1, 2, 3, 4, 5, 6] length = len(list1) print(length)
-
2.列表的加操作
列表1 + 列表2 :將列表1和列表2中的元素,組合成新的列表
list2 = [1, 2, 3, 4] + ['a', 'b', 'c', 'd']
print(list2)
-
3.列表的*的操作
列表*數(shù)字 將列表中元素重復指定次數(shù),組合成一個新的列表
list3 = [10, 2] * 4
print(list3)
-
4.in 和 not in
元素in列表:判斷指定的元素是否在指定的列表中
list4 = ['abc', '123', 1, 10]
re = 'abc' in list4
print(re)
元素 not in 列表:判斷指定元素是否不在列表中
re = 'ab' not in list4
print(re)
-
5.獲取列表中的最大元素
格式:max(列表)
list5 = [1, 34, 6, 78, 90, 12, 35]
max1 = max(list5)
print(max1)
list6 = ['a', 'b', 'c', 'd', 'aaa']
print(max(list6))
注意:獲取最大值或最小值的時候,列表中的元素的類型要么都是數(shù)字,要么都是字符串
list6 = ['a', 'b', 96, 97, 98]
print(max(list6))
TypeError: '>' not supported between instances of 'int' and 'str'
-
6.獲取列表中的最小值
格式:min(列表)
list5 = [1, 34, 6, 78, 90, 12, 35]
print(min(list5))
list6 = ['a', 'b', 'c', 'd', 'aaa']
print(min(list6))
練習:求比賽的平均分數(shù)(5個裁判,給表演打分。去掉一個最高分,最低分,最后的平均分)
import random
list1 = []
for _ in range(5):
num = random.randint(0, 10) # 隨機產(chǎn)生浮點數(shù)是random.uniform
list1.append(num)
print(list1)
去掉最高分和最低分
max1 = max(list1)
min1 = min(list1)
list1.remove(max1)
list1.remove(min1)
計算平均數(shù)
sum(列表):計算列表元素中所有的元素的和
print(sum(list1)/len(list1))
-
7.將其他的數(shù)據(jù)轉(zhuǎn)換成列表
個數(shù):list(數(shù)據(jù))
將字符串轉(zhuǎn)換成列表
list1 = list('abcdef')
print(list1)
將列表轉(zhuǎn)換成字符串(不是僅僅將列表的元素拼接成字符串的,而是將整個列表所有的結(jié)構(gòu)都作為字符串的字符)
str1 = str([1, 2, 3, 4, 'a'])
print(str1)
將range轉(zhuǎn)換成列表
list2 = list(range(10))
print(list2)