Python基礎-列表、元組、字典、字串
多維陣列
nums1 = [1,2,3] #一維陣列 nums2 = [1,2,3,[4,56]] #二維陣列 nums3 = [1,2,3,4,['a','b','c','d','e',['一','二','三']],['四','五']] #三維陣列 nums4 = [1,2,3,4,['a','b','c','d','e',['一','二','三',[1,2,3]]]] #四維陣列 print(nums2[3][1]) #56 print(nums2[-1][-1]) #56 print(nums3[4][5][1]) #'二' print(nums3[5][1]) #'五' print(nums3[-1][-1]) #'五'
list
list中可以放不同型別的值,list的下標從0開始。
#定義一個list stu_name = ['張三', '李四', '王五', 1, 1.5] print(stu_name) #列印list中全部內容 print(stu_name[0]) #列印'張三'
len() length = len(stu_name) #list的長度,list中元素的個數
list增加元素
append() insert() stu_name.append('朱六') #在list末尾新增一個元素 stu_name.insert(0, '小軍') #在指定位置插入一個元素 print(stu_name)
list修改元素
stu_name[6] = '剷剷' print(stu_name)
list刪除元素
pop() remove() del reverse() stu_name.pop() #刪除最後一個元素 stu_name.pop(4) #刪除指定下標的元素 stu_name.remove('小軍') #刪除指定的元素,有多個相同的元素,會刪除第一個 del stu_name[-1] #刪除指定位置的元素,正數從正序開始,負數從倒序開始 print(stu_name)
list查詢元素
count() index() reverse() clear() my_list = ['小黑', '小白', 1, 1, 2, 1.5] print(my_list[-1]) print(my_list[0]) print(my_list.count(1)) #查詢某個元素在list裡面出現的次數 print(my_list.index(1)) #查詢元素的下標,多個相同元素取第一個,不存在的無素會報錯 print(my_list.reverse()) #直接列印結果為None print(my_list) #輸出時list被反轉 my_list.clear() #list被清空 print(my_list)
sort() sort(reverse=True) nums = [9.23, 9, 3, 6, 1, 0] nums.sort() #從小到大排序 nums.sort(reverse=True) #從大到小排序 nums.extend(my_list) #把一個list裡面的元素加入 print(nums) new_list = nums + my_list + stu_name #合併 print(new_list) print(new_list * 3) #複製幾次
list練習
users = ['wrp','nhy','haha'] #校驗使用者名稱是否存在 for i in range(5): username = input("請輸入使用者名稱:") # 如果使用者不存在的話,說明可以註冊 #if users.count(username) > 0: if username not in users: #in就是判斷在不在裡面 print("使用者未註冊,可以註冊") users.append(username) else: print("使用者已經被註冊")
#最原始的list取值方式,通過每次計算下標來獲取元素 passwords = ['123456','123123','7891234','password'] count = 0 while count < len(passwords): s = passwords[count] print(s) count+=1
passwords = ['123456','123123','7891234','password'] #for迴圈直接迴圈一個list,每次迴圈取它的值得 for p in passwords: print(p)
#修改passwords中的內容 passwords = ['123456','123123','7891234','password'] index = 0 for p in passwords: passwords[index] = 'abc'+p index+=1 print(passwords)
#使用列舉函式,會計算下標和元素 passwords = ['123456','123123','7891234','password'] for index,p in enumerate(passwords): passwords[index] = 'abc' + p print(index, p) print(passwords)
切片
切片同樣適合於字串
l = ['a','b','c','d','e','f','g','h','i'] print(l[0:3]) #顧頭顧尾巴 print(l[:5]) #如果冒號前沒寫,代表從0開始取 print(l[4:]) #如果冒號後沒有寫,代表到結束 print(l[:]) #冒號前後都不寫,取全部 print(l[0:8:2]) #從0開始,算上每隔2取一個 nums = list(range(1,101)) #range()生成一個list print(nums[1::2]) #取100以內的偶數 print(nums[::2]) #取100以內的奇數 print(nums[::-2]) #步長為正數,從左到右取,步長為負數,從右到左取
字串切片
#字串切片 words = '中秋節要上課' print(words[::-1]) for index,w in enumerate(words): print(index, w)
迴文演算法
#迴文演算法,反過來倒過去都一樣,如'上海自來水來自海上',12321 for i in range(10): str = input("請輸入一個字串:") if len(str) < 1: print("字串長度必須大於是") elif str == str[::-1]: print("是迴文") else: print("不是迴文")
元組
元組不能被修改,如果元組只有一個元素,需要在定義後新增逗號,不然會認為括號是運算子
建立元組
tup1 = () tup2 = (1,2,3,4,5,6) tup3 = ('google','baidu',1000,2000) tup4 = (50,)#元組中只有一個元素時,在後面新增逗號
訪問元組
tup = ('google','baidu',1000,2000) print(tup[1])
修改元組
tup = ('google','baidu',1000,2000) tup1 = ('abc','xyz') tup3 = tup + tup1 print(tup3)
刪除元組
tup = ('google','baidu',1000,2000) del tup
元組運算
#元組運算 print(len((1,2,3))) print((1,2,3)+(4,5,6)) print(3 in(1,2,3)) for x in(1,2,3): print(x) tup =(1,2,3,4,5) len(tup) #求元組長度 max(tup) #求元組中最大值 min(tup) #求元組中最小值 seq = [1,2,3,4,5] tup = tuple(seq) #將列表換為元組
字典
xiaojun ={ 'name':'xioajun', 'age': 21, 'sex':'男', 'addr':'北京', 'phone':'13266568006' }
增加
stus = {} stus['name'] = '小軍' stus['name'] = '海龍' stus.setdefault('name', '小帆') #如果這個key已存在,setdefault不會修改這個key的值 stus.setdefault('age',18) stus.setdefault('sex', '男') stus.setdefault('addr', '北京') stus.setdefault('phone', '1961231231') stus.update({'money':1000}) #將一個字典增加到stus中
修改
stus['name'] = '小鵬'
查詢
print(stus['addr']) print(stus.get('sex','男')) #如果查不到,get()中第二個引數就返回預設值 print(stus.keys()) #所有的key print(stus.values()) #所有的value for k in stus: print(k, '===>',stus.get(k)) for k,v in stus.items(): print(k, '====>', v)
刪除
del stus['phone'] stus.pop('addr') stus.popitem() #隨機刪除 del stus #刪除整個字典
字典多層巢狀取值
all_stus = { 'xiaojun':{ 'name': 'xiaojun', 'age': 21, 'sex': '男', 'addr': '北京', 'phone': '13266568006', 'id': 1, 'cars':['牧馬人','911','野馬','勞斯萊斯'], }, 'hailong':{ 'name': 'hailong', 'age': 21, 'sex': '男', 'addr': '北京', 'phone': '13266569006', 'id': 2, 'bags':{ 'qianbao':['lv', 'ysl'], 'beibao':['coach','abc'] } } } all_stus['xiaojun']['cars'].append('五菱巨集光') #給xiaojun的car中新增值 print(len(all_stus['xiaojun']['cars'])) #統計xiaojun中car的數量 all_stus['hailong']['sex'] = '女'#將hailong的sex改為女 all_stus['hailong']['bags']['qianbao'].remove('lv') #刪除bags中qianbao中的lv all_stus['hailong']['bags']['kuabao']=['bac'] #增加一個kuabao all_stus['hailong']['bags']['kuabao'].append('lv2') #在kuabao中增加lv2 all_stus['hailong']['bags'].pop('kuabao') #刪除kuabao
字串常用方法
password = ' 123456 \n 456789 ' print(password.strip())#預設去掉字串兩邊的空格和換行符 print(password.rstrip()) #右邊的空格 print(password.lstrip()) #左邊的空格 password1 = 'jpg 1233456789 .jpg' print(password1.strip('.jpg')) #掉去字串兩邊的.jpg print(password1.upper()) #轉成大寫 print(password1.lower()) #轉成小寫 print(password1.capitalize()) #把首字母改成大寫 print(password1.count('jpg')) #字串出現的次數 print(password.replace('譚愛玲','上山打老虎')) #找到了就替換字串,找不到也不報錯 filename = 'a.mp3' print(filename.endswith('.mp3')) #判斷是否以xxx結尾 print(filename.startswith('196')) #判斷以xxx開頭 #'{name},{age}'.format(name='hhh',age=18) names = '小軍,海龍,楊帆,大朋' names1 = '小軍 海龍 楊帆大朋' print(names.split(',')) #以分隔符將字串分割成list print(names1.split()) #不指定時預設以空格切割