Python----list&元祖常用方法總結


一、創建列表,把使用逗號分隔的數據用中括號[  ]括起來即為一個列表,列表也叫數組、list、array;
列表里面也可以再套列表,一個列表里面套一個列表,叫二維數組;一個里面套一個列表,里面的列表再套一個列表,這個叫三維數組,套幾層就是幾維,定義格式如下:

1 list = [] #空列表
2 list1 = ['小白','小黑','小芳','小華','小高'] #普通數組
3 list2 = ['小白',['小黑',500],'小芳','小華','小高'] #二維數組
4 list3 = ['小白',['小黑',500,['anby','joker']],'小芳','小華','小高'] #三維數組

角標、索引
  通過下標可取到列表中的元素,下標從0開始計數,也就是說,比如說一個列表,有個5元素,那么它第一個元素下標就是0,第二個就是1,以此類推,最后一個元素的下標可以寫-1,字符串也有下標,和列表一樣

二、列表中添加新元素

b = [1,2,3,4]

citys = []

citys.append('北京')  #在列表末尾增加一個元素

citys.insert(0,'上海')  #insert可指定增加的位置,在列表中0的位置即最前面增加一個元素,一次只能加一個,下標不能寫負數,如果指定的下標不存在,那么就是在末尾添加

citys.extend(b)  #合並列表 將b列表中的元素添加到citys中

 

三、查看列表中的值

print(cities[0])  #通過指定下標索引來訪問列表中的值,這里0即代表查詢列表中第一個元素

print(cities[-1])  #-1代表最后一個元素

print(cities.index('廣州')) #獲取該元素的下標,如果有多個,則返回第一個,如果找不到該元素的話,會報錯

print(cities.count('廣州'))  #查看該元素在list里面出現的次數,如果該元素不存在,那么返回0

遍歷列表
for i in list :
    print(i)

 

四、修改列表中的值,只能修改已有下標的元素

1 list[1]='南京'  #修改指定位置的元素值,指定的下標不存在,會報錯,將角標為1的元素值修改為:南京


五、刪除列表中的值

cities.pop()  #刪最后一個元素

cities.pop(0)  #刪除指定下標的元素

cities.remove('北京')  #刪除指定的元素,有多個相同的元素,刪除第一個

cities.clear()  #清空list

del cities[-1]  #刪除指定下標對應的元素 

del cities  #刪除整個列表, list刪除后無法訪問

print(cities.pop())  #有返回值

print(cities.remove())  #無返回值


六、列表操作的函數

list.reverse()將列表反轉

#注:list 中有字符串、數字時不能排序,排序針對同類型
list.sort()排序,默認升序

list.sort(reverse=True) 降序排列


len(list)  #列表元素個數 

max(list)  #返回列表元素最大值

min(list)  #返回列表元素最小值 

list(seq)  #將元組轉換為列表

list1+list2  #合並list

list*3  #復制列表3次

enumerate 用法(打印元素對應的下標),同時取下標和元素

list = ['a','b','c']

for index,value in enumerate(lists):

    print(index,value)

#打印結果如下:
0 a
1 b
2 c


七、列表list的循環和切片

7.1 循環,如果直接for 循環一個list 的時候,那么每次循環的值都是這個list 里面的元素

for i in list:

    print (i)

多維數組,是可以循環多個元素的

w =[[1,2,3,4],[2,3,4,5]]

for a,b,c,d in w:#多維數組,是可以循環多個元素的

    print(a,b,c,d)

7.2 切片,切片也就是另一種方式獲取列表的值,它可以獲取多個元素,可以理解為,從第幾個元素開始,到第幾個元素結束,獲取他們之間的值,格式是name:[1:10],格式是name:[1:10],比如說要獲取name的第一個元素到第五個元素,就可以用name[0:6],切片是不包含后面那個元素的值的,即顧頭不顧尾;前面的下標如果是0的話,可以省略不寫,這樣寫,name[:6],切片后面還有可以寫一個參數,叫做步長,也就是隔多少個元素,取一次,默認可以不寫,也就是隔一個取一次,切片操作也可以對字符串使用,和列表的用法一樣,實例如下:

 1 name[n:m]  #切片是不包含后面那個元素的值(顧頭不顧尾)
 2 
 3 name[:m]  #如果切片前面一個值缺省的話,從開頭開始取
 4 
 5 name[n:]  #如果切片后面的值缺省的話,取到末尾
 6 
 7 name[:]  #如果全部缺省,取全部
 8 
 9 name[n:m:s]  #s:步長  隔多少個元素取一次
10 
11 #步長是正數,從左往右取
12 
13 #步長是負數,從右往左取
14 
15 #注:切片同樣適用於字符串,字符串也有下標
16 
17 lis = list(range(1,21))
18 
19 print(lis[:18:-1])  #-1倒序,開頭沒有取值,所以默認從20往左取值,取到18的下標(19),但不顧尾,所以19不取
20 
21 #打印結果:
22 [20]


八、列表生成式
列表生成式即List Comprehensions,是Python內置的非常簡單卻強大的可以用來創建list的生成式。

實例1:要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11)):list = list(range(1,11))
實例2:生成[1x1, 2x2, 3x3, ..., 10x10]可以用 list = list(x * x for x in range(1,11))
實例3:for循環后面還可以加上if判斷,這樣我們就可以篩選出僅偶數的平方:list = list(x * x for x in range(1,11) if x%2== 0)
實例4:使用兩層循環,可以生成全排列:
list = [m + n for m in 'ABC' for n in 'XYZ']
print(list)
輸出結果:['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']

實例5:for循環其實可以同時使用兩個甚至多個變量,比如dict的items()可以同時迭代key和value:
法一:
>>> d = {'x': 'A', 'y': 'B', 'z': 'C' }
>>> for k, v in d.items():
... print(k, '=', v)

結果:
y = B
x = A
z = C


九、總結
1,列表是一個有序的對象集合

2,一個對象在另外一個對象中嗎?用 in 來檢查

3,從列表中刪除對象 remove
remove:取一個對象值作為唯一參數。remove方法會從列表中刪除指定數據值的第一次出現。
如果在列表中找到了這個數據值,就會從列表中刪除包含這個值的對象(同時列表的大小減一)。如果在列表中沒有找到這個數據值,會報錯。

4,從列表中彈出對象 pop
pop:取一個可選的索引值(indexof)作為參數。pop方法根據對象的索引值從現有列表刪除和返回一個對象。
如果調用pop時沒有指定索引值,將刪除和返回列表中的最后一個對象。如果指定了一個索引值,則會刪除和返回那個位置上的對象。
如果列表為空或者調用pop時指定了一個不存在的索引值,會報錯。

5,用對象擴展列表 extend 
extend:取一個對象列表作為唯一參數。extend方法接收第二個列表,將其中的各個對象增加到現有列表。如果要將兩個列表合並為一個列表,這個方法就非常有用。

6,在列表中插入一個對象 insert/append
insert:取一個索引值和一個對象作為參數。insert 方法將一個對象插入到現有列表中指定索引值的前面。
這樣就可以將對象插入到現有列表的開頭,或者插入到列表中的任何位置。要把對象插入到列表末尾,用append 。用法 num.insert(2,"abc")

7,如何復制一個數據結構?不要使用賦值操作符復制列表;應當使用copy方法。
賦值操作都指向同一個數據,如果修改一個列表,另一個也會改變;如果想讓另一個變量引用一個現有列表,可以使用賦值操作(=)
copy:list2 = list1.copy() ;如果想建立現有列表中對象的副本,用他們初始化一個新列表,就一定要使用copy 方法

8,列表切片的使用【start:stop:step】不包含stop 索引值
step 為正數時,從右至左;step 為負數時,從左至右

十、list小練習
一、檢驗用戶名是否合法需求:
1.輸入賬號:input
2.如果賬號存在,提示:已被注冊,如果不存在,提示:注冊成功  可先定義一個list來存放所有用戶
3.輸入不能為空,可以用strip()方法
4.用戶名6-12位之間  可用len()方法
5.最多可輸入3次,可用循環來控制

all_users =['xianghao','zhangxiaobai','zhangfang']
for i in range(3):
    username = input('請輸入賬號:').strip()
    if len(username)>5 and len(username)<13:
         if all_users.count(username)>0:
             print('該用戶名已存在')
         else:
             print('名字不錯,可以注冊!')
             break
    else:
         print('用戶名長度不合法!長度為6-12之間!')
else:
    print('失敗次數過多')

二、校驗密碼需求
1.密碼必須同時包含大寫字母,小寫字母和數字
2.密碼長度為5-10位
3.最多輸入密碼5次

list1 ={'1','2','3','4','5','6','7','8','9','0'}
list2 ={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'}
list3 ={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}

for i in range(5):
    pwd = input('請輸入密碼:').strip()
    password=set(pwd)
    if len(pwd) >4 and len(pwd) <11:
        if len(password & list1) != 0 and len(password & list2) != 0 and len(password & list3) != 0:
            print('密碼合法!')
            break
        else:
            print('密碼不合法!必須同時包含大寫字母,小寫字母和數字')
    else:
        print('密碼長度不合法!長度為5-10位!')
else:
    print('失敗次數過多,請明日再試!')

 
十一、元祖
元組其實和列表一樣,不一樣的是,元組的值不能改變,一旦創建,就不能再改變了;元組的定義方式是用小括號( );元組只有兩個方法,那就是count和index
如果元組里面 只有一個元素的話,那么你必須在這個元素后面加一個逗號

t = (1,2,4,5,6,7)

words=(1,)

words2=('abc',)

print('t',type(t))

print('words',type(words))

print('words2',type(words2))

print(t.index(2))  #找到元素的下班

print(t.count(2))  #找到元素的個數

 



 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM