一、列表
1.定義:
- ?stus = ["s1","s2","s3","s4","s5","s6","s7"]? #List 列表 數組
? ? ? ? ? ? 用中括號定義,逗號隔開
stus2 = [] #空的列表
stus3 = list() #空的列表 ?【定義空的列表便于往里邊添加數據】
?2.增加:
-
stus.append("bai") #在list末尾增加一個元素
-
stus.insert(0,"yu") #在指定位置增加元素
-
stus.insert(9,"nn") #指定的下標不存在,那么會把元素插入到最后
print(stus)
運行結果:['s1', 's2', 's3', 's4', 's5', 's6', 's7', 'bai']
? ? ? ? ? ? ? :['yu', 's1', 's2', 's3', 's4', 's5', 's6', 's7', 'bai']
?
3.查:
-
print(stus[3]) #單個取
print(stus[-1]) #取最后一個元素
4.改:
-
stus[0]="baibai"
print(stus)
運行結果:['baibai', 's2', 's3', 's4', 's5', 's6', 's7']
?
5.刪除:
-
stus.pop() #默認刪除list里面最后一個元素
stus.pop(2) #刪除指定位置的元素
stus.pop(9) #刪除指定不存在的元素,會報錯
?報錯信息:IndexError: pop index out of range
-
del stus[0] #刪除指定位置的元素
print(stus) -
stus.remove('s4')#刪除指定名稱的元素
print(stus) -
stus.remove('s5')#如果list里面有多個一樣的元素,那么就只會刪掉一個
stus.remove('gg')#刪除不存在的元素,會報錯
print(stus)
報錯信息:
stus.remove('gg')
ValueError: list.remove(x): x not in list
?
6.list其他常用方法
-
new_stus = stus.copy() #復制一個新list
print(new_stus) -
count = stus.count('s5') #某個元素在list里面的數量
-
stus.clear() #清空list
-
news_stus = stus.copy() #復制一個
print(news_stus)
stus = ['s1','s2','s3','s3','s4','s5','s5']
-
stus.reverse()#反轉
print(stus)
運行結果:['s5', 's5', 's4', 's3', 's3', 's2', 's1']
?
stus = ['1','2','4','3','9','14','5']
- stus.sort()#正序排序
print(stus)
- stus.sort(reverse=True) #倒序排序
print(stus)
運行結果:['1', '14', '2', '3', '4', '5', '9']
['9', '5', '4', '3', '2', '14', '1']
反轉的運行結果:['5', '14', '9', '3', '4', '2', '1']
-
stus.extend(stus1) #把一個list的元素加入另一個list里面
print('extend',stus)
運行結果:extend ['s1', 's2', 's3', 's3', 's4', 's5', 's5', '1', '2', '4', '3', '9', '14', '5']
-
result = stus.index('s8')#查找列表中某個元素的下標
print(result)
#查找列表中不存在的元素 會報錯
7.多維數組
1 num1 = [1,2,3,4,['a','b','c','d']] #2維數組 2 num2 = [1,2,3,4,['a','b','c','d',['dev','test','pre']]] #3維數組 3 4 print(num2[4][4][2]) 5 運行結果:pre 6 7 列表循環 8 stus = ['baibai','chenquan','niunihu'] 9 第一種方法: 10 #username='' 11 password='123456' 12 #sql='insert into user(username,password) value ("%s","%s");'%(username,password) 13 14 index = 0 15 while index < len(stus): 16 username = stus[index] 17 username = 'szz-'+ username 18 sql = 'insert into user(username,password) value ("%s","%s");' % (username, password) 19 print(sql) 20 index+=1 21 22 運行結果:insert into user(username,password) value ("szz-baibai","123456"); 23 insert into user(username,password) value ("szz-chenquan","123456"); 24 insert into user(username,password) value ("szz-niunihu","123456"); 25 26 第二種方法:【最簡單的方法】 27 stus = ['baibai','chenquan','niunihu'] #for循環直接循環一個list,就是取list里面的每一個元素 28 for stu in stus: 29 print('每次循環的值',stu) 30 username = 'szz' + stu 31 print(username) 32 33 第三種方法: 34 l = list(range(3)) 35 print(l) 36 37 for i in range(len(stus)): #這種方法也相當于是用下標取值 38 username = stus[i] 39 print(username)
?
8.list練習:賬戶和密碼登錄
1 usernames = ['baibai','yaya','cc','niuniu'] 2 passwords = ['123456','abc123','324324','45656'] 3 4 #需要校驗 用戶不存在的話 要提示 5 #需要校驗是否為空 6 #賬戶密碼正確登錄成功 7 8 #最多輸入三次 9 #分析: 10 #1、輸入賬戶密碼 11 #2、校驗是否輸入為空 12 #3、校驗賬戶否存在 list.count() 13 #4、從usernames里面找到user的下標,然后去password中去找對應的密碼 14 today = '2019-03-25' 15 count = 0 16 while count < 3: 17 count+=1 18 #for i in range(3): #for和while都可以 19 username = input('username:').strip() 20 password = input('password:').strip() 21 if username == '' or password == '': 22 print('賬戶/密碼不能為空!') 23 #elif usernames.count(username)==0: #判斷元素的個數 24 elif username not in usernames: #兩種方法都可以 判斷元素是否在某個list里面 25 print('用戶名不存在!') 26 else: 27 user_index = usernames.index(username) #登錄用戶的下標 28 p = passwords[user_index] 29 if password == p: 30 print('歡迎%s登錄,今天的日期是%s.'%(username,today)) 31 break 32 else: 33 print('密碼錯誤!') 34 else: 35 print('錯誤次數已經用盡')
?
9.字典
1 stu_info = { 2 'username':'baibai', 3 'password':'123456', 4 'money':20, 5 'addr':'北京' 6 } 7 8 #定義字典 9 d1 = {} #創建空字典 10 d2 = dict() #創建空字典 11 12 #增加元素 13 d1['name'] = '胖妞' 14 d1['age'] = 18 15 d1.setdefault('class','雙子座') 16 print('之前的',d1) 17 18 d1.setdefault('age','38') 19 #如果使用setdefault,key已經存在了,就不會修改原來key的值 20 21 #修改 22 d1['name'] = '胖妞2' 23 print('之后的',d1) 24 25 #取值 26 print(d1['name']) 27 print(d1.get('name')) 28 29 print(d1['y'])#取一個不存在的key,報錯keyError 30 print(d1.get('y'))#取一個不存在的key,返回none 31 32 print(d1.get('kk',0))#不存在的值 返回0,默認返回none 33 34 print(d1.keys()) #取到字典里面所有的key 35 print(d1.values()) #取到字典里面所有的value 36 運行結果:dict_keys(['name', 'age', 'class']) 37 dict_values(['胖妞2', 18, '雙子座']) 38 39 #刪除 40 d1.pop('name') 41 del d1['name'] 42 d1.popitem()#隨機刪除一個元素 43 print(d1) 44 45 d1.clear()#清空 46 print(d1) 47 運行結果:{} 48 49 d2 = {'abc':1234} 50 d1.update(d2) #把字典2加到字典1里邊 51 print(d1) 52 運行結果:{'name': '胖妞2', 'age': 18, 'class': '雙子座', 'abc': 1234}
?
10.字典循環
1 stus =[ 2 {'name':'bai','age':'17','addr':'北京'}, 3 {'name':'yaya','age':'23','addr':'上海'}, 4 {'name':'hu','age':'25','addr':'北京'}, 5 {'name':'wawa','age':'26','addr':'北京'}, 6 ] 7 8 for stu in stus: 9 stu['phone']='110' 10 print(stus) 11 12 運行結果:[{'name': 'bai', 'age': '17', 'addr': '北京', 'phone': '110'}, {'name': 'yaya', 'age': '23', 'addr': '上海', 'phone': '110'}, {'name': 'hu', 'age': '25', 'addr': '北京', 'phone': '110'}, {'name': 'wawa', 'age': '26', 'addr': '北京', 'phone': '110'}] 13 14 stus = { 15 "白": 16 { 17 "house":['三環','四環','五環'], 18 "car":{ 19 "日本":["雷克薩斯","英菲尼迪"], 20 "中國":["五菱宏光","紅旗","比亞迪","寶駿"], 21 "美國":["福特","凱迪拉克"] 22 }, 23 "化妝品":{ 24 "SK-2":1000, 25 "YSL":2000 26 } 27 } 28 } 29 30 #統計一下白總用有多少輛車 31 #白又買了德國車2輛,奧迪,奔馳 32 #白的化妝品全被男朋友扔了 33 34 car = stus["白"]['car'] 35 36 count_car = 0 37 for c in car.values(): 38 count_car = len(c)+ count_car 39 print(count_car) 40 運行結果:8 41 42 car = stus["白"]['car'] 43 car["德國"]=["奧迪","奔馳"] 44 print(car) 45 運行結果:{'日本': ['雷克薩斯', '英菲尼迪'], '中國': ['五菱宏光', '紅旗', '比亞迪', '寶駿'], '美國': ['福特', '凱迪拉克'], '德國': ['奧迪', '奔馳']} 46 47 del stus['白']['化妝品'] 48 print(stus) 49 運行結果:{'白': {'house': ['三環', '四環', '五環'], 'car': {'日本': ['雷克薩斯', '英菲尼迪'], '中國':['五菱宏光', '紅旗', '比亞迪', '寶駿'], '美國': ['福特', '凱迪拉克']}}} 50 51 ###第二種增加車的方式,沒有上邊那種方便 52 car = stus["白"]['car'] 53 new_car ={"德國":["benchi","bmw"]} 54 car.update(new_car) 55 print(car) 56 運行結果:{'日本': ['雷克薩斯', '英菲尼迪'], '中國': ['五菱宏光', '紅旗', '比亞迪', '寶駿'], '美國': ['福特', '凱迪拉克'], '德國': ['benchi', 'bmw']}
?