列表及列表操作:
列表是最常用的數據類型之一,列表也叫數組,列表定義,使用[]即可;列表里面可以再套列表,一個里面套一個列表,叫二維數組;一個里面套一個列表,里面的列表再套一個列表,這個叫三位數組,套幾層就是幾維,定義格式如下:
1 list1 = [1,2,3,4]#一個普通的數組 2 list2 = ['marry','lily',[50,'money']]#二維數組 3 list3 = ['name','sex',['lily',124,['aaaa','bbb']]]#三維數組
1 all_nums=[123,456,[789,10,11]] 2 three=[123,456,[789,10,11,['hahah','1234']]] 3 print(all_nums[2][1]) #10 4 print(three[2][-1][0]) #hahah
通過下列訪問中的元素,下標從0開始計數,也就是說,比如一個列表,有5個元素,那么它第一個元素下標就是0,第二個就是1,以此類推,字符串也有下標,和列表一樣,對列表的操作,分以下幾種增,刪,改,查
下標,角標,索引:
1 stus=['xiaohei','xiaobai','xiaohuang','xiaolan'] 2 print(stus[1]) #'xiaobai' 3 print(stus[-1]) #'xiaolan' 最后一個元素下標可以寫-1 4 print(stus[-2]) #'xiaohuang'
增加:
msg='你好' name=['andashu','cc','niuniu'] name.append(msg)#在list末尾增加一個元素 name.insert(1,msg)#從指定位置插入,這個1代表下標 name.insert(10,msg)#如果指定下標不存在,那么就是在末尾添加 name.insert(-1,msg)#-1可以寫,但是結果添加出來不對,所以一般不寫 print(name)
修改:
1 msg='你好' 2 name=['andashu','cc','niuniu'] 3 name[1]='baby'#修改指定位置的值,直接取下標進行修改即可
查詢:
1 msg='你好' 2 name=['andashu','cc','niuniu'] 3 print(name[0])#獲取第一個元素 4 print(name[-1])#-1代表最后一個元素
1 stus=['xiaohei','xiaobai','xiaohuang','xiaolan'] 2 print(stus.count('xiaohei'))#查看在list中某個元素的個數 3 print(stus.count('hahaha'))#查看在list中某個元素的個數,如果該元素不存在,那么返回0 4 print(stus.index('xiaobai'))#找到這個元素的下標,如果多個,返回第一個 5 print(stus.index('hahaha'))#找到這個元素的下標;如果多個,返回第一個;如果找一個不存在的元素,會報錯
刪除:
1 msg='你好' 2 name=['andashu','cc','niuniu'] 3 name.remove('cc')#刪除指定的值 4 name.pop()#默認刪除最后一個元素,如果指定下標,那么刪除指定的元素 5 name.pop(2) 6 name.pop(100)#如果刪除不存在的元素,那么報錯 7 del name[0]#刪除指定位置的值 8 name.clear()#清空列表
列表操作,一些內置的方法:
1 a=[1,2,3,4] 2 b=[5,6,7,8] 3 a.extend(b)#合并a,b兩個列表 4 print(a)#[1,2,3,4,5,6,7,8] 5 print(b)#[5,6,7,8]只是把b列表里的內容合并到a中,b列表并不受影響 6 7 stus = ['xiaohei','xiaobai','xiaohuang','cxdser','xiaohei'] 8 stus.reverse()#反轉list 9 print(stus)#['xiaohei', 'cxdser', 'xiaohuang', 'xiaobai', 'xiaohei'] 10 11 12 nums = [9,31,345,12,457,2352,12143,2321] 13 nums.sort() 14 print(nums)#[9, 12, 31, 345, 457, 2321, 2352, 12143] 15 nums.sort(reverse=True) 16 print(nums)#[12143, 2352, 2321, 457, 345, 31, 12, 9] 17 #sort()排序,默認排序是升序,如果指定了reverse=True就是按照降序排
list循環:
如果直接for循環一個list的時候,那么每次循環的值都是這個list里面的元素
1 names=['haha','hehe','heihei'] 2 for name in names: 3 print(name) # haha hehe heihei 4 5 6 index=0 7 for i in range(3): 8 print(names[index]) 9 index+=1 # haha hehe heihe
切片:
切片也就是另一種方式獲取列表的值,它可以獲取多個元素,可以理解為,從第幾個元素開始,到第幾個元素結束,獲取他們之間的值,格式是name:[1:10],比如說要獲取name的第一個元素到第五個元素,就可以用name[0:6],切片是不包含后面那個元素的值,記住顧頭不顧尾;前面的下標如果是0的話,可以省略不寫,這樣寫,name[:6],切片后面還有可以寫一個參數,叫做步長,也就是隔多少個元素,取一次,默認可以不寫,也就是隔一個取一次,切片操作也可以對字符串使用,和列表的用法一樣,實例如下:
1 nums=[1,2,3,4,5,6,2,3,4,6,4,3,2,1,2,3,4] 2 print(nums[3:6])#[4,5,6] 3 print(nums[:6])#[1,2,3,4,5,6] 如果切片的前面一個值不寫的話,從頭開始數 4 print(nums[3:])#[4,5,6,2,3,4,6,4,3,2,1,2,3,4] 如果切片的后面一個值不寫的話,取到末尾 5 print(nums[:])#如果切片的兩個值都不寫的話,從頭取到尾 6 print(nums[::2])#步長為2,這個代表取所有的元素,然后每隔2個元素取一個 7 print(nums[::-1])#步長是正數的話從左往右取,步長是負數的話從右往左取,相當于倒序排列 8 print(nums[-1:-9:-1]) 9 print(nums[16:8:-1]) 10 #切片同樣適用于字符串,字符串也有下標 11 title='今天發 蘋果' #空格也算一個字符串 12 print(title[0]) #今 13 print(title[:4])#今天發 14 for t in title: 15 print(t)#今天發 蘋果 16 for i,t in enumerate(title):#enumerate可以同時循環索引下標和值 17 print('%s:%s'%(i,t)) #0:今 1:天 2:發 3: 4:蘋 5:果
18 #列表也適用enumerate:
names=['haha','hehe','heihei']
for index,name in enumerate(names):
print('%s:%s'%(index,name))
小練習:
注冊:輸入用戶名,判斷賬號是否存在,若存在給出提示;若不存在,提示注冊成功;