python中有列表、元組、集合、字典這四種可以存放多個(gè)數(shù)據(jù)元素的集合,他們?cè)诳傮w功能上都起著存放數(shù)據(jù)的作用,卻都有著各自的特點(diǎn)。本片文章中我們會(huì)對(duì)列表的用法做詳細(xì)說(shuō)明。
演示環(huán)境: python3.6 pycharm中的python3.6
第一部分:列表(list): 列表(list)用來(lái)存儲(chǔ)不同的數(shù)據(jù)類型,使用 [ ]
例如:
service?=?['http','ssh','ftp']
后續(xù)演示中的service都以上述為基礎(chǔ)。
列表的特性: 1.1:索引:
print(service[1]) ##輸出第二個(gè)元素,sshprint(service[-1])???##輸出最后一個(gè)元素,ftp
1.2:切片:
print(service[1:]) ##打印第一個(gè)元素之后的內(nèi)容print(service[:-1]) ##打印最后一個(gè)元素之前的內(nèi)容print(service[::-1])??##倒序輸出
1.3:重復(fù):
print(service?*?3)???##輸出三遍
1.4:連接:
service1 = ['nfs','samba']print(service?+?service1)
1.5:成員操作賦:
print('nfs'?in?service)???##判斷是否存在
1.6:迭代:[for循環(huán)遍歷]
for i in service:??print(i)???????##遍歷輸出每個(gè)元素
1.7列表里嵌套列表
service2 = [['abc','def','www'],[1,2,3],['mike','tony','sun']]對(duì)其索引:print(service2[2][1]) ##第三個(gè)元素中的第二個(gè)元素對(duì)其切片:print(service2[:][1])???##第二個(gè)元素
對(duì)以上內(nèi)容進(jìn)行一個(gè)練習(xí): 題目:輸入一年中的某一天,判斷這一天是這一年的第幾天:【輸入格式:YYYY-MM-DD】
User_input = input('輸入:年-月-日')Year = int(User_input.split('-')[0]) ##得到年份Month = int(User_input.split('-')[1]) ##得到月份Day = int(User_input.split('-')[2]) ##得到天li = [31,28,31,30,31,30,31,31,30,31,30,31] ##所有平年各個(gè)月份的天數(shù)num = 0 ##記錄天數(shù)if ((Year % 4 == 0) and (Year % 100 != 0) or (Year % 400 == 0)): ##當(dāng)閏年時(shí): li[1] = 29 ##將二月的天數(shù)改為29for i in range(12): ##遍歷月份if Month > i + 1: ##i從0開(kāi)始,假如是5月的某一天,i循環(huán)到3停止,經(jīng)過(guò)0-1-2-3四次循環(huán),取4個(gè)月份即取1-2-3-4月的所有天 num += li[i] ##將1-4月總天數(shù)求和else: ##退出if判斷后,當(dāng)下一次循環(huán)時(shí),i=4,i+1不滿足if的條件,進(jìn)入else,將最后5月的第幾天加入總天數(shù)中 num += Daybreakprint('這一天是%d年的第%d天'?%(Year,num))
列表的增刪改查: 1.增加:
往列表里增加元素:
1.print(service + ['firewalld']) ##用連接的方式2.service.append('firewalld') print(service) ##append:追加一個(gè)元素到列表中3.extend:拉伸 追加多個(gè)元素到列表中 service.extend(['mysql','firewalld'])4.service.insert(1,'samba')??###在指定索引位置插入元素??##在第二個(gè)元素的位置插入samba作為第二個(gè)元素
2.刪除:
1.service.pop() ##彈出最后一個(gè)元素a = service.pop(0) ##彈出第1個(gè)元素 ###可以將其賦值2.service.remove('ssh') ##指定刪除對(duì)象的名字 ##直接刪除,不能將其賦值 ##不能指定序號(hào),只能指定要?jiǎng)h除對(duì)象的3. del service ##刪除列表del service ##直接刪除整個(gè)列表print(service)
3.賦值:
1.service[0] = 'mysql' ##通過(guò)索引 重新賦值2.service[:2]?=?['samba','iscsi']??##通過(guò)切片給前兩個(gè)元素重新賦值
4.查看: 查看出現(xiàn)的次數(shù)
service.count('ssh')
查看指定元素的索引值
service.index('iscsi') ###最小索引值service.index('ssh',1,3)???###從1-3中查找【第二個(gè)元素和第三個(gè)元素之間】【不取上限】
5.排序: sort 排序?qū)ψ址判虿粎^(qū)分大小寫(xiě)
names = ['alice','Bob','coco','Harry']names.sort()names ###按照ASCLL排序 ###先排序首字母為大寫(xiě)的,再排序首字母是小寫(xiě)的names.sort(key=str.lower) ###對(duì)字符串排序不區(qū)分大小寫(xiě),相當(dāng)于將所有元素轉(zhuǎn)換為小寫(xiě),再排序names.sort(key=str.upper)???###相當(dāng)于將所有元素轉(zhuǎn)換為大寫(xiě),再排序
亂序
li = list(range(10)) ##生成0-9,將其轉(zhuǎn)換為列表形式print(li)import randomrandom.shuffle(li) ##隨機(jī)打亂print(li)????
練習(xí):修改用戶登陸系統(tǒng):用戶名和用戶密碼存放在兩個(gè)列表里。用admin超級(jí)用戶登陸后,可以進(jìn)行添加,刪除,查看用戶的操作。 1.后臺(tái)管理員admin 密碼admin 2.管理員才能看到會(huì)員信息 3.會(huì)員信息包含 添加會(huì)員信息 刪除會(huì)員信息 查看會(huì)員信息 退出
inuser = input('UserName: ')inpasswd = input('Password: ')users = ['root', 'westos']passwds = ['123', '456']if inuser == 'admin' and inpasswd == 'admin':while True: print(""" 菜單 1.添加會(huì)員信息 2.刪除會(huì)員信息 3.查看會(huì)員信息 4.退出 """) choice = input('請(qǐng)輸入選擇:')if choice == '1': Add_Name = input('要添加的會(huì)員名: ') Add_Passwd = input('設(shè)置會(huì)員的密碼為:') users = users + [Add_Name] passwds = passwds + [Add_Passwd] print('添加成功!')elif choice == '2': Remove_Name = input('請(qǐng)輸入要?jiǎng)h除的會(huì)員名:')if Remove_Name in users: Remove_Passwd = input('請(qǐng)輸入該會(huì)員的密碼:') SuoYinZhi = int(users.index(Remove_Name))if Remove_Passwd == passwds[SuoYinZhi]: users.remove(Remove_Name) passwds.pop(SuoYinZhi) print('成功刪除!')else: print('用戶密碼錯(cuò)誤,無(wú)法驗(yàn)證身份,刪除失敗')else: print('用戶錯(cuò)誤!請(qǐng)輸入正確的用戶名')elif choice == '3': print('查看會(huì)員信息'.center(50,'*')) print('\t用戶名\t密碼') usercount = len(users)for i in range(usercount): print('\t%s\t%s' %(users[i],passwds[i]))elif choice == '4': exit()else:??????????? print('請(qǐng)輸入正確選擇!')
這是簡(jiǎn)單的列表使用練習(xí),功能不全面,后續(xù)待改進(jìn)。
練習(xí)二:用python列表實(shí)現(xiàn)棧操作: 1.入棧 2.出棧 3.棧頂元素 4.棧長(zhǎng)度 5.棧是否為空
“”" 功能包括: 1.入棧 放到棧頂?shù)奈恢?br />2.出棧 判斷是不是棧頂元素,不是的話將其后元素遍歷移除,再移走該元素,再將其他元素加回棧 3.棧頂元素 索引 4.棧長(zhǎng)度 判斷個(gè)數(shù) 5.棧是否為空 #棧頂有無(wú)元素 “”" #棧的特點(diǎn):先進(jìn)后出
Zhan = [] ##定義棧列表t = [] ##定義出棧臨時(shí)棧列表while True: print(""" 菜單 1.入棧 2.出棧 3.查看棧頂元素 4.查看棧長(zhǎng)度 5.查看棧中元素 6.退出""") choice = input('請(qǐng)輸入選擇: ')if choice == '1': Aim_Name = input('請(qǐng)輸入要入棧的元素名:') Zhan = Zhan+[Aim_Name] print('入棧成功!')elif choice == '2': Del_Name = input('請(qǐng)輸入要出棧的元素名:')if Del_Name in Zhan: Length = len(Zhan)if Zhan.index(Del_Name) == Length-1: #如果為棧頂元素 Zhan.pop()else: #不為棧頂元素 SuoYin = Zhan.index(Del_Name)for i in range(Length-1-SuoYin): #將要出棧元素后面的元素先保留 t.append(Zhan.pop()) #原棧中最后一個(gè)元素變?yōu)榱说谝粋€(gè),順序顛倒 Zhan.pop() #目標(biāo)出棧 Zhan = Zhan+t[::-1] #將目標(biāo)元素后的其他元素移回棧中else: print('棧中沒(méi)有%s' %Del_Name)elif choice == '3': Zhan_Top = Zhan[-1] print('棧頂元素為:%s' %Zhan_Top)elif choice == '4': Length = len(Zhan) print('棧的長(zhǎng)度為%s' %Length)elif choice == '5': print(Zhan)elif choice == '6': exit()else: print('請(qǐng)輸入正確的選項(xiàng)!')????print('\n')
關(guān)于python中列表的基礎(chǔ)用法如上所述。
總結(jié)
以上是生活随笔 為你收集整理的python3 列表取交集_常用序列数据类型列表 的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔 網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔 推薦給好友。