在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Python/ 列表
基礎(chǔ)
itertools
HTTP 服務(wù)
hashlib
閉包
文件和目錄
單元測試
使用 @property
標準模塊
陌生的 metaclass
Base64
進程、線程和協(xié)程
讀寫二進制文件
匿名函數(shù)
輸入和輸出
Click
元組
字符編碼
partial 函數(shù)
參考資料
collections
協(xié)程
類和實例
Python 之旅
定制類和魔法方法
常用數(shù)據(jù)類型
繼承和多態(tài)
ThreadLocal
HTTP 協(xié)議簡介
Requests 庫的使用
讀寫文本文件
列表
os 模塊
迭代器 (Iterator)
正則表達式
集合
上下文管理器
異常處理
你不知道的 super
定義函數(shù)
datetime
資源推薦
字典
slots 魔法
hmac
第三方模塊
進程
類方法和靜態(tài)方法
函數(shù)參數(shù)
高階函數(shù)
函數(shù)
re 模塊
高級特性
線程
argparse
生成器
結(jié)束語
字符串
map/reduce/filter
函數(shù)式編程
Celery
裝飾器

列表

字符串和元組是不可變的,而列表是可變(mutable)的,可以對它進行隨意修改。我們還可以將字符串和元組轉(zhuǎn)換成一個列表,只需使用 list 函數(shù),比如:

>>> s = 'hello'
>>> list(s)
['h', 'e', 'l', 'l', 'o']
>>> a = (1, 2, 3)
>>> list(a)
[1, 2, 3]

本文主要介紹常用的列表方法:

  • index
  • count
  • append
  • extend
  • insert
  • pop
  • remove
  • reverse
  • sort

index

index 方法用于從列表中找出某個元素的位置,如果有多個相同的元素,則返回第一個元素的位置。

看看例子:

>>> numbers = [1, 2, 3, 4, 5, 5, 7, 8]
>>> numbers.index(5)        # 列表有兩個 5,返回第一個元素的位置
4
>>> numbers.index(2)
1
>>> words = ['hello', 'world', 'you', 'me', 'he']
>>> words.index('me')
3
>>> words.index('her')       # 如果沒找到元素,則會拋出異常
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 'her' is not in list

count

count 方法用于統(tǒng)計某個元素在列表中出現(xiàn)的次數(shù)。

看看例子:

>>> numbers = [1, 2, 3, 4, 5, 5, 6, 7]
>>> numbers.count(2)   # 出現(xiàn)一次
1
>>> numbers.count(5)   # 出現(xiàn)了兩次
2
>>> numbers.count(9)   # 沒有該元素,返回 0
0

append

append 方法用于在列表末尾增加新的元素。

看看例子:

>>> numbers = [1, 2, 3, 4, 5, 5, 6, 7]
>>> numbers.append(8)         # 增加 8 這個元素
>>> numbers
[1, 2, 3, 4, 5, 5, 6, 7, 8]
>>> numbers.append([9, 10])   # 增加 [9, 10] 這個元素
>>> numbers
[1, 2, 3, 4, 5, 5, 6, 7, 8, [9, 10]]

extend

extend 方法將一個新列表的元素添加到原列表中。

看看例子:

>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]
>>>
>>> a.extend(3)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
>>> a.extend([3])
>>> a
[1, 2, 3, 4, 5, 6, 3]

注意到,雖然 append 和 extend 可接收一個列表作為參數(shù),但是 append 方法是將其作為一個元素添加到列表中,而 extend 則是將新列表的元素逐個添加到原列表中。

insert

insert 方法用于將某個元素添加到某個位置。

看看例子:

>>> numbers = [1, 2, 3, 4, 5, 6]
>>> numbers.insert(3, 9)
>>> numbers
[1, 2, 3, 9, 4, 5, 6]

pop

pop 方法用于移除列表中的一個元素(默認是最后一個),并且返回該元素的值。

看看例子:

>>> numbers = [1, 2, 3, 4, 5, 6]
>>> numbers.pop()
6
>>> numbers
[1, 2, 3, 4, 5]
>>> numbers.pop(3)
4
>>> numbers
[1, 2, 3, 5]

remove

remove 方法用于移除列表中的某個匹配元素,如果有多個匹配,則移除第一個。

看看例子:

>>> numbers = [1, 2, 3, 5, 6, 7, 5, 8]
>>> numbers.remove(5)          # 有兩個 5,移除第 1 個
>>> numbers
[1, 2, 3, 6, 7, 5, 8]
>>> numbers.remove(9)          # 沒有匹配的元素,拋出異常
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list

reverse

reverse 方法用于將列表中的元素進行反轉(zhuǎn)。

看看例子:

>>> numbers = [1, 2, 3, 5, 6, 7, 5, 8]
>>> numbers.reverse()
>>> numbers
[8, 5, 7, 6, 5, 3, 2, 1]

sort

sort 方法用于對列表進行排序,注意該方法會改變原來的列表,而不是返回新的排序列表,另外,sort 方法的返回值是空。

看看例子:

>>> a = [4, 3, 6, 8, 9, 1]
>>> b = a.sort()
>>> b == None         # 返回值為空
True
>>> a
[1, 3, 4, 6, 8, 9]    # 原列表已經(jīng)發(fā)生改變

如果我們不想改變原列表,而是希望返回一個排序后的列表,可以使用 sorted 函數(shù),如下:

>>> a = [4, 3, 6, 8, 9, 1]
>>> b = sorted(a)          # 返回一個排序后的列表
>>> a
[4, 3, 6, 8, 9, 1]         # 原列表沒有改變
>>> b
[1, 3, 4, 6, 8, 9]         # 這是對原列表排序后的列表

注意到,不管是 sort 方法還是 sorted 函數(shù),默認排序都是升序排序。如果你想要降序排序,就需要指定排序參數(shù)了。比如,對 sort 方法,可以添加一個 reverse 關(guān)鍵字參數(shù),如下:

>>> a = [4, 3, 6, 8, 9, 1]
>>> a.sort(reverse=True)    # 反向排序
>>> a
[9, 8, 6, 4, 3, 1]

該參數(shù)對 sorted 函數(shù)同樣適用:

>>> a = [4, 3, 6, 8, 9, 1]
>>> sorted(a, reverse=True)
[9, 8, 6, 4, 3, 1]

除了 reverse 關(guān)鍵字參數(shù),還可以指定 key 關(guān)鍵字參數(shù),它為每個元素創(chuàng)建一個鍵,然后所有元素按照這個鍵來排序,比如我們想根據(jù)元素的長度來排序:

>>> s = ['ccc', 'a', 'bb', 'dddd']
>>> s.sort(key=len)          # 使用 len 作為鍵函數(shù),根據(jù)元素長度排序
>>> s
['a', 'bb', 'ccc', 'dddd']

另外,我們還可以使用 sorted 進行多列(屬性)排序。

看看例子:

>>> students = [
        ('john', 'B', 15),
        ('jane', 'A', 12),
        ('dave', 'B', 10),
        ('ethan', 'C', 20),
        ('peter', 'B', 20),
        ('mike', 'C', 16)
    ]
>>>
# 對第 3 列排序 (從小到大)
>>> sorted(students, key=lambda student: student[2]) 
[('dave', 'B', 10),
 ('jane', 'A', 12),
 ('john', 'B', 15),
 ('mike', 'C', 16),
 ('ethan', 'C', 20),
 ('peter', 'B', 20)]

# 對第 2 列排序(從小到大),再對第 3 列從大到小排序
>>> sorted(students, key=lambda student: (student[1], -student[2]))
[('jane', 'A', 12),
 ('peter', 'B', 20),
 ('john', 'B', 15),
 ('dave', 'B', 10),
 ('ethan', 'C', 20),
 ('mike', 'C', 16)]

如果你想了解更多關(guān)于排序的知識,可以參考此文。

小結(jié)

  • 列表是可變的。
  • 列表常用的方法有 index, count, append, extend 等。

參考資料

上一篇:字符編碼下一篇:讀寫二進制文件