一、列表介紹
- 想一想:
前面學(xué)習(xí)的字符串可以用來存儲(chǔ)一串信息,那么想一想,怎樣存儲(chǔ)咱們班所有同學(xué)的名字呢?
定義100個(gè)變量,每個(gè)變量存放一個(gè)學(xué)生的姓名可行嗎?有更好的辦法嗎?- 答:
列表
- 列表的格式
- 變量 namesList的類型為列表
namesList = ['xiaoWang','xiaoZhang','xiaoHua']- 比C語言的數(shù)組強(qiáng)大的地方在于列表中的元素可以是不同類型的
testList = [1, 'a']
- 打印列表
- demo:
namesList = ['xiaoWang', 'xiaoZhang', 'xiaoHua'] print(namesList[0]) print(namesList[1]) print(namesList[2])
結(jié)果:
結(jié)果.png
testList = [1, 'a'] print(testList[0]) print(testList[1])
結(jié)果:
結(jié)果.png
二、列表的循環(huán)遍歷
- 使用for循環(huán)
為了更有效率的輸出列表的每個(gè)數(shù)據(jù),可以使用循環(huán)來完成
- demo:
namesList = ['xiaoWang','xiaoZhang','xiaoHua'] for name in namesList: print(name)
結(jié)果:
結(jié)果.png
- 使用while循環(huán)
為了更有效率的輸出列表的每個(gè)數(shù)據(jù),可以使用循環(huán)來完成
- demo:
namesList = ['xiaoWang','xiaoZhang','xiaoHua'] length = len(namesList) i = 0 while i<length: print(namesList[i]) i+=1
結(jié)果:
結(jié)果.png
三、列表的相關(guān)操作
列表中存放的數(shù)據(jù)是可以進(jìn)行修改的,比如"增"、"刪"、"改"
- 添加元素("增"append, extend, insert)
- append
通過append可以向列表添加元素
- demo:
#定義變量A,默認(rèn)有3個(gè)元素 A = ['xiaoWang','xiaoZhang','xiaoHua'] print("-----添加之前,列表A的數(shù)據(jù)-----") for tempName in A: print(tempName) #提示、并添加元素 temp = input('請輸入要添加的學(xué)生姓名:') A.append(temp) print("-----添加之后,列表A的數(shù)據(jù)-----") for tempName in A: print(tempName)
結(jié)果:
結(jié)果.png
- extend
通過extend可以將另一個(gè)集合中的元素逐一添加到列表中
- demo:
a = [1,2] b = [3,4] print(a) print(b) print('-----------------') a.append(b) print(a) print('-----------------') a.extend(b) print(a)
結(jié)果:
結(jié)果.png
- insert
insert(index, object) 在指定位置index前插入元素object
- demo:
a = [1,2,0] print(a) print('-----------------') a.insert(1,9) print(a) print('-----------------')
結(jié)果:
結(jié)果.png
- 修改元素("改")
修改元素的時(shí)候,要通過下標(biāo)來確定要修改的是哪個(gè)元素,然后才能進(jìn)行修改
- demo:
#定義變量A,默認(rèn)有3個(gè)元素 A = ['xiaoWang','xiaoZhang','xiaoHua'] print("-----修改之前,列表A的數(shù)據(jù)-----") for tempName in A: print(tempName) #修改元素 A[1] = 'neuedu' print("-----修改之后,列表A的數(shù)據(jù)-----") for tempName in A: print(tempName)
結(jié)果:
結(jié)果.png
- 查找元素("查"in, not in, index, count)
所謂的查找,就是看看指定的元素是否存在
- in, not in
python中查找的常用方法為:
- in(存在),如果存在那么結(jié)果為true,否則為false
- not in(不存在),如果不存在那么結(jié)果為true,否則false
- demo:
#待查找的列表 nameList = ['xiaoWang','xiaoZhang','xiaoHua'] #獲取用戶要查找的名字 findName = input('請輸入要查找的姓名:') #查找是否存在 if findName in nameList: print('在列表中找到了相同的名字') else: print('沒有找到')
結(jié)果1(找到):
結(jié)果1.png結(jié)果2(沒找到):
結(jié)果2.png
- 說明:
in的方法只要會(huì)用了,那么not in也是同樣的用法,只不過not in判斷的是不存在
- 刪除元素("刪"del, pop, remove)
類比現(xiàn)實(shí)生活中,如果某位同學(xué)調(diào)班了,那么就應(yīng)該把這個(gè)條走后的學(xué)生的姓名刪除掉;在開發(fā)中經(jīng)常會(huì)用到刪除這種功能。
- 列表元素的常用刪除方法有:
- del:根據(jù)下標(biāo)進(jìn)行刪除
- pop:刪除最后一個(gè)元素
- remove:根據(jù)元素的值進(jìn)行刪除
- demo:(del)
movieName = ['加勒比海盜','駭客帝國','第一滴血','指環(huán)王','霍比特人','速度與激情'] print('------刪除之前------') for tempName in movieName: print(tempName) del movieName[2] print('------刪除之后------') for tempName in movieName: print(tempName)
結(jié)果:
結(jié)果.png
- demo:(pop)
movieName = ['加勒比海盜','駭客帝國','第一滴血','指環(huán)王','霍比特人','速度與激情'] print('------刪除之前------') for tempName in movieName: print(tempName) movieName.pop(1) print('------刪除之后------') for tempName in movieName: print(tempName)
結(jié)果:
結(jié)果.png
- demo:(remove)
movieName = ['加勒比海盜','駭客帝國','第一滴血','指環(huán)王','霍比特人','速度與激情'] print('------刪除之前------') for tempName in movieName: print(tempName) movieName.remove('指環(huán)王') print('------刪除之后------') for tempName in movieName: print(tempName)
結(jié)果:
結(jié)果.png
- 排序(sort, reverse)
- sort方法是將list按特定順序重新排列,默認(rèn)為由小到大,參數(shù)reverse=True可改為倒序,由大到小。
- reverse方法是將list逆置。
- demo:
a = [1, 4, 2, 3] print(a) print('-------------------') a.sort() print(a) print('-------------------') a.reverse() print(a) print('-------------------')
結(jié)果:
結(jié)果.png
四、列表的嵌套
- 列表嵌套
- 類似while循環(huán)的嵌套,列表也是支持嵌套的
- 一個(gè)列表中的元素又是一個(gè)列表,那么這就是列表的嵌套
schoolNames = [['北京大學(xué)','清華大學(xué)'], ['南開大學(xué)','天津大學(xué)','天津師范大學(xué)'], ['山東大學(xué)','中國海洋大學(xué)']]
- 應(yīng)用
一個(gè)學(xué)校,有3個(gè)辦公室,現(xiàn)在有8位老師等待工位的分配,請編寫程序,完成隨機(jī)的分配
#encoding=utf-8 import random # 定義一個(gè)列表用來保存3個(gè)辦公室 offices = [[],[],[]] # 定義一個(gè)列表用來存儲(chǔ)8位老師的名字 names = ['A','B','C','D','E','F','G','H'] i = 0 for name in names: index = random.randint(0,2) offices[index].append(name) i = 1 for tempNames in offices: print('辦公室%d的人數(shù)為:%d'%(i,len(tempNames))) i+=1 for name in tempNames: print("%s"%name,end='') print("\n") print("-"*20)
結(jié)果:
結(jié)果.png
結(jié)果1.png
五、元組
Python的元組與列表類似,不同之處在于元組的元素不能修改。元組使用小括號(hào),列表使用方括號(hào)。
- demo:
aTuple = ('et',77,99.9) print(aTuple)
結(jié)果:
結(jié)果.png
- 訪問元組
- demo:
tuple = ('hello',123,3.14,"neuedu") print(tuple) print('-'*30) print(tuple[0]) print(tuple[1]) print(tuple[2]) print(tuple[3])
結(jié)果:
結(jié)果.png
- demo:
tuple = ('hello',123,3.14,"neuedu") print(tuple) print('-'*30) for tup in tuple: print(tup) print('-'*30)
結(jié)果:
結(jié)果.png
- 修改元組
- demo:
tuple = ('hello',123,3.14,"neuedu") print(tuple) print('-'*30) tuple[1] = 666666 print('-'*30)
結(jié)果:
結(jié)果.png
說明: python中不允許修改元組的數(shù)據(jù),包括不能刪除其中的元素。
- 元組的內(nèi)置函數(shù)count, index
index和count與字符串和列表中的用法相同
- demo:
a = ('a', 'b', 'c', 'a', 'b') print(a) print('-'*30) # print(a.index('a', 1, 3))# 注意是左閉右開區(qū)間 # print('-'*30) print(a.index('a', 1, 4)) print('-'*30) print(a.count('b')) print('-'*30) print(a.count('d')) print('-'*30)
結(jié)果:
結(jié)果.png
結(jié)果1.png





















