1. 列表 list
存儲(chǔ)一系列名字锉屈,存儲(chǔ)一些新聞條目您市,可以使用列表的格式嘿架。
Name = “張三”
Name2 = “l(fā)isi ”
#以上變量都是用來存儲(chǔ)單個(gè)數(shù)據(jù)的變量
#而列表是可以存儲(chǔ)多個(gè)數(shù)據(jù)的高級(jí)數(shù)據(jù)類型 -- 而稱之為容器
List = [“張三”,”李四”,”王五”]
1.1. 列表的基本形式
列表中不僅僅可以存儲(chǔ)相同的數(shù)據(jù)鹦倚,也可以存儲(chǔ)不同的數(shù)據(jù)類型
names=["張三","李四","王五","趙六"]
ages=[1,4,6,9]
s=[1,"哈哈","呵呵",True]
1.2. 獲取列表中元素
1.2.1. 根據(jù)下標(biāo)(索引)獲取
#可以根據(jù)下標(biāo)來對(duì)列表中的元素進(jìn)行獲取
#注意:列表中下標(biāo)對(duì)應(yīng)的是一個(gè)元素 是越,其他的和字符串中的下標(biāo)使用是一致的
print(names[0])
print(names[1])
print(names[-1]) #得到的是列表中從右向左的第一個(gè)元素。但是一般不會(huì)使用負(fù)數(shù)的下標(biāo)
1.2.2. 切片操作
列表的切片操作和字符串中的切片操作一致染坯,不一樣的就是 列表切片得到的結(jié)果還是一個(gè)列表類型均芽,哪怕最后切片只得到一個(gè)數(shù)據(jù)。也是列表類型的數(shù)據(jù)
print(names[0:3]) #索引0-2的元素
print(names[0::2]) #步長為2单鹿,索引0-2的元素
print(names[::-1]) #步長為1掀宋,倒序遍歷
print(names[3:0:-1]) #步長為-1,倒序遍歷仲锄,索引3 2 1
1.3. 列表的循環(huán)遍歷
1.3.1. for循環(huán)
names=["張三","李四","王五","趙六"]
for name in names:
print(name)
最基本的列表循環(huán)遍歷劲妙,將列表中的每一個(gè)元素分別賦值給name變量,然后進(jìn)行打印展示昼窗。
1.3.2. for循環(huán)第二種方式
names=["張三","李四","王五","趙六"]
#先獲取列表的長度
len=len(names)
#長度范圍從0到len
for i in range(0,len):
#根據(jù)下標(biāo)獲取元素
print(names[i])
1.3.3. while循環(huán)遍歷
names=["張三","李四","王五","趙六"]
#先獲取列表的長度
len=len(names)
i=0
while i < len:
print(names[i]) #也是通過遍歷下標(biāo)是趴,在通過下標(biāo)來獲取對(duì)應(yīng)的元素展示信息
i+=1
1.4. 列表常見的操作
1.4.1. 修改元素
修改元素的時(shí)候,只需要獲取到對(duì)應(yīng)的下標(biāo)澄惊,就可以重新賦值唆途,就完成了修改
nums[1]=100 #注意下標(biāo)一定要是存在的下標(biāo)才可以
1.4.2. ** append 增加元素**
names=["張三","李四","王五","趙六"]
names.append("周七")
print(names) #添加的名字會(huì)顯示再names列表的最后位置
1.4.3. extend 可以將另外一個(gè)集合中的元素逐一添加到列表中
groupNames=["張三","李四","王五","趙六"]
group2=["哈哈","吼吼"]
groupNames.extend(group2)
print(groupNames) #將小列表中的兩個(gè)內(nèi)容逐一添加到了大列表中
1.4.4. insert 在指定位置插入元素
insert(index,object) #在指定位置處插入元素object
nums=[1,3,4,5]
nums.insert(0,1)#在0索引值處插入1
nums.insert(1,8)#在1索引值處插入8
print(nums)
1.4.5. 查找元素 in
python中常見的查找方法為:
in(存在),如果存在那么結(jié)果為True富雅,否則為False
not in (不存在),如果不存在那個(gè)結(jié)果為True,否則為False
姓名查找案例:
names=["張三","李四","王五"]
name=input("請(qǐng)輸入要查詢的姓名?\n")
if name in names:
print("存在")
else:
print("不存在")
1.4.6. index count
index 獲取某元素在列表中的索引值
count 獲取元素在列表中出現(xiàn)的次數(shù)
names=["張三","李四","王五","李四","王五"]
name="李四"
print(names.index(name))#查找索引
print(names.count(name))#查找個(gè)數(shù)
1.4.7. 刪除元素
del:根據(jù)元素下標(biāo)進(jìn)行刪除
starNames=["張三","李四","王五","李四","王五"]
#del 根據(jù)下標(biāo)進(jìn)行刪除
del starNames[2]
print(starNames) #["張三","李四","李四","王五"]
pop:刪除最后一個(gè)元素肛搬,并能獲取到最后一個(gè)
lastName=starNames.pop()
print(lastName)#王五
print(starNames)#["張三","李四","李四"]
remove:根據(jù)元素的值進(jìn)行刪除
starNames.remove("李四")#["張三","李四"]
print(starNames)
1.4.8. reverse 反轉(zhuǎn) sort 排序
reverse
scores=[89,78,90,70,100]
scores.reverse()#將原來的反過來 #[100,70,90,78,89]
sort
scores=[89,78,90,70,100]
scores.sort() #默認(rèn)從小到大[70,78,89,90,100]
scores.sort(reverse=True) #反轉(zhuǎn)成從大到小[100,90,89,78,70]
print(scores)
1.4.9. 冒泡排序
冒泡排序:及將列表中的數(shù)字按從小到大的順序進(jìn)行排序
ages = [123,23,1,45,67,8,90]
for i in range(0,len(ages)-1):
for j in range(0,len(ages)-1-i):
if ages[j] > ages[j+1]:
ages[j],ages[j+1] = ages[j+1],ages[j]
print(ages)
1.5. 列表的嵌套
一個(gè)學(xué)校没佑,有三個(gè)班級(jí),班級(jí)里邊分別有一些學(xué)生温赔。用列表實(shí)現(xiàn)蛤奢。分別 計(jì)算每個(gè)班級(jí)的人數(shù),并把每個(gè)班級(jí)的學(xué)生信息打印出來陶贼。
allNames=[["張三","李四","王五"],["小黑","小白"],["如花","小強(qiáng)","鬼見愁","鬼腳七"]]
i=1
for names in allNames:
print("班級(jí)%d人數(shù)是%d"%(i,len(names)))
i+=1
for name in names :
print("班級(jí)%d班學(xué)生姓名:%s"%(i,name))
1.6. 列表案例:
1.6.1. 案例1
編程實(shí)現(xiàn)一個(gè)元素全為數(shù)字的列表啤贩,求最大值、最小值
nums=[10,9,100,80,75,10,3]
1:
#排序
#nums.sort()#正序
#print("最小值",nums[0],"最大值",nums[len(nums)-1])
2:
#先定義第一個(gè)就是最大值
max=nums[0]
#先定義第一個(gè)就是最小值
min=nums[0]
for num in nums:
#認(rèn)為第一個(gè)就是最大值
#之后的和最大值比較拜秧,如果比這個(gè)最大值大痹屹,最大值等于該值
if num>max:
max=num
if num<min:
min=num
print("最大值",max,"最小值",min)
3:
#根據(jù)下標(biāo)獲取最大值
maxIndex=0
minIndex = 0
for n in range(0,len(nums)):
if nums[n] > nums[maxIndex]:
maxIndex=n
print("最大值",nums[maxIndex])
if nums[n] < nums[minIndex]:
minIndex=n
print("最小值",nums[minIndex])
4:
print(max(nums)) 方法 最大值
print(min(nums)) 方法 最小值
1.6.2. 案例
計(jì)算每個(gè)班級(jí)學(xué)生總成績
#計(jì)算每個(gè)班級(jí)的總成績
score = [[99,89,79,69],[98,88,78,68,58],[97,87,77]]
#班號(hào)
i = 1
for s in score:#s表示每個(gè)班級(jí)的列表
#定義sum記錄每個(gè)班級(jí)的總成績
sum = 0
for a in s:#每個(gè)班級(jí)中學(xué)生的分?jǐn)?shù)
sum = sum + a
print('%d班的總成績是%d'%(i,sum))
#班號(hào)自增
i += 1
2. 元組
python中元組和列表類似,
不同之處在于元組的元素不能更改枉氮,元組使用小括號(hào)志衍,list使用中括號(hào)。
但是整個(gè)列表可以被刪除
tuple=("abc","bcd","efg")
2.1. 根據(jù)下標(biāo)和切片獲取元素
print(tuple[0]) #abc
print(tuple[0:1]) #abc bcd efg
2.2. 元組中內(nèi)置函數(shù)count index
tuple=("abc","bcd","efg","bcd")
print(tuple.index("abc")) #0
print(tuple.count("bcd")) #2
-
案例:
1:
使用tuple嵌套list,錄入個(gè)人信息聊替,(個(gè)人的姓名楼肪,年齡,性別)并將個(gè)人信息遍歷打印惹悄。準(zhǔn)備空的tuple infos=([],[],[],[],[]) for i in range(0,3): userName=input("請(qǐng)輸入姓名:\n") age=int(input("請(qǐng)輸入年齡:\n")) sex=input("請(qǐng)輸入性別:\n") #獲取列表 list=infos[i] list.append(userName) list.append(age) list.append(sex) #整體打印 print(infos)
2:
學(xué)員信息查詢春叫,在三個(gè)班級(jí)中,查找張三信息俘侠,判斷張三是否存在象缀,張三屬于第幾個(gè)班級(jí)。name=input("請(qǐng)輸入要查找的姓名:\n") classes=[["李斯","趙高","秦二世"],["王五","張三","周⑦"],["哈哈","呵呵","吼吼"]] #定義標(biāo)識(shí)符號(hào) flag=False #認(rèn)為不存在 #遍歷 num=0 #定義學(xué)生班級(jí)號(hào) snum=0 for cs in classes: #進(jìn)行班級(jí)第二層遍歷 for c in cs: #如果名字相等 if name==c: flag=True #找到了對(duì)應(yīng)的學(xué)生爷速,記錄班級(jí) snum=num+1 num+=1 if flag: print(name+"存在班級(jí)號(hào)是%d"%snum) else: print(name+"不存在")
3.3. 試做題:
將字符串的年月日 時(shí)分秒依次存入列表
4. 自己練習(xí)一下:
作業(yè)1:分別錄入三組數(shù)據(jù):使用循環(huán)控制,每組錄入5個(gè)數(shù)據(jù)霞怀。錄入結(jié)束惫东,能夠打印出所有信息。
作業(yè)2:登陸操作:用戶名和密碼及進(jìn)行錄入判斷 當(dāng)用戶名是Colin 密碼是123456的時(shí)候顯示登錄成功 毙石。如果密碼和用戶名錄入錯(cuò)需要循環(huán)錄入廉沮。并且錄入錯(cuò)誤次數(shù)超過三次提示:賬號(hào)已鎖。并且停掉循環(huán)