Python列表常用方法總結


一,創建列表 

 只要把逗號分隔的不同的數據項使用方括號([ ])括起來即可 下標(角標,索引)從0開始,最后一個元素的下標可以寫-1

list  =  ['1',‘2,‘3’]

list = [] 空列表

二,添加新的元素

list.append() 在list 末尾增加一個元素

list.insert(n,'4') 在指定位置添加元素,如果指定的下標不存在,那么就是在末尾添加【在下標為4的元素位置添加n】

list1.extend(list2) 合並兩個list,list2中仍有元素

三,查看列表中的值

print(list)    返回列表

for i in list: print i  遍歷列表

print(list[n])  使用下標索引來訪問列表中的值,同樣你也可以使用方括號的形式截取字符

print(list.count(xx)) 查看某個元素在這個列表里的個數,如果改元素不存在,那么返回0

print(list.index(xx))找到這個元素的下標,如果有多個,返回第一個,如果找一個不存在的元素會報錯

四,刪除list 中的元素

list.pop() 刪除最后一個元素

list.pop(n)刪除指定下標位置的元素,如果刪除一個不存在的元素會報錯

list.remove(xx) 刪除list 里面的一個元素,有多個相同的元素,刪除第一個 

print(list.pop()) 有返回值,返回已經刪除元素之后的列表

print(list.remove()) 無返回值

del  list[n] 刪除指定下標對應的元素【從內存中回收列表的指定元素】 

del list 刪除整個列表, list刪除后無法訪問【內存回收列表】

五,排序和反轉

list.reverse()將列表反轉

list.sort()排序,默認升序

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

注:list 中同時存在字符串,數字時不能排序,排序針對某一列表中的同類型數據

1、sort函數

如果對python中的列表進行排序,可以使用List類的成員函數sort,該函數會在原空間上進行操作,對列表本身進行修改,不返回副本。語法如下:

L.sort(cmp=None, key=None, reverse=False)

2、sorted函數

sorted函數就比sort函數要強大許多了,sort只能對列表進行排序,sorted可以對所有可迭代類型進行排序,並且返回新的已排序的列表。語法如下:

sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list

一共可接受4個參數,含義分別如下:

  1. 可迭代類型,例如字典、列表、
  2. 比較函數,cmp是帶兩個參數的比較函數;key 是帶一個參數的函數;
  3. 可迭代類型中某個屬性,對給定元素的每一項進行排序
  4. 降序或升序

3、結合使用

與sorted經常結合使用的有:

①比較函數經常會用到lambda。

lambda表達式,通常是在需要一個函數,但是又不想費神去命名一個函數的場合下使用,也就是指匿名函數。比如對元組組成的列表中某一項進行排序:

students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10),]  
sorted(students, key=lambda student : student[2])   # sort by age  
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]  

②比較函數經常會用到operator.itemgetter函數

operator模塊提供的itemgetter函數用於獲取對象的哪些維的數據,參數為一些序號。

要注意,operator.itemgetter函數獲取的不是值,而是定義了一個函數,通過該函數作用到對象上才能獲取值。
sorted函數用來排序,sorted(iterable[, cmp[, key[, reverse]]])
其中key的參數為一個函數或者lambda函數。所以itemgetter可以用來當key的參數

 例如根據第二個域和第三個域進行排序
 a = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
 sorted(students, key=operator.itemgetter(1,2))

③可迭代元素經常會用到items

items是字典中的一個方法,返回由元組組成的列表。

dict={'a':1,'b':2}
ans = sorted(dict.items(), key = lambda x:x[1], reverse = True)

六,列表操作的函數

1、len(list):列表元素個數
2、max(list):返回列表元素最大值
3、min(list):返回列表元素最小值
4、list(seq):將元組轉換為列表
5、enumerate 用法(打印元素對應的下標)

list_ = [1, 2, 3, 44, 'abc', 'lkj']
for i, v in enumerate(list_):
    print("value:{},index:{}".format(v, i))

結果如下:

value:1,index:0
value:2,index:1
value:3,index:2
value:44,index:3
value:abc,index:4
value:lkj,index:5

七,list切片(list 取值的一種方法)

name[n:m]  切片是不包含后面那個元素的值(顧頭不顧尾)

name[:m] 如果切片前面一個值缺省的話,從開頭開始取

name[n:] 如果切片后面的值缺省的話,取到末尾

name[:] 如果全部缺省,取全部

name[n:m:s] s:步長  隔多少個元素取一次列表中的值

步長是正數,從左往右取

步長是負數,從右往左取

注:切片同樣適用於字符串,字符串也有下標

 八、列表生成式

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

          列表生成式的結構是在一個中括號里包含一個表達式,然后是一個for語句,然后是0個或多個for或者if語句。列表表達式可以是任意的,可以在列表中放入任意類型的對象。返回結果將是一個新的列表,在這個以if和for語句為上下文的表達式運行完成之后產生。

variable = [out_exp for out_exp in input_list if out_exp == 2]

 

下面通過例題來對列表生成式進行深入的理解: 

1. 生成一個列表,列表元素分別為 [1*1,2*2,3*3……n*n],假設n = 10。

## 若用一般方法實現代碼如下:

list1 = []
for i in range(1, 11):
    list1.append(i * i)

## 若用列表生成式:

list2 = [i * i for i in range(1, 11)]

2.字符串s1 ='ABC',字符串 s2 = '123',要求:生成序列 A1 A2 A3 B1 B2 B3 C1 C2 C3

## 若用一般方法實現代碼如下:

list1 = []
for i in 'ABC':
    for j in '123':
        list1.append(i+j)

## 若用列表生成式:

list2 = [i+j for i in 'ABC' for j in '123']

小總結:

1,列表是一個有序的對象集合,且列表可變,在對列表進行一系列操作之后不會創建新的列表,可用id()函數對比查看

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

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

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

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

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

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

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

 

 

https://www.jb51.net/article/137924.htm


免責聲明!

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



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