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

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

列表

字符串和元組是不可變的,而列表是可變(mutable)的,可以對(duì)它進(jìn)行隨意修改。我們還可以將字符串和元組轉(zhuǎn)換成一個(gè)列表,只需使用 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 方法用于從列表中找出某個(gè)元素的位置,如果有多個(gè)相同的元素,則返回第一個(gè)元素的位置。

看看例子:

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

count

count 方法用于統(tǒng)計(jì)某個(gè)元素在列表中出現(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)   # 沒(méi)有該元素,返回 0
0

append

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

看看例子:

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

extend

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

看看例子:

>>> 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 可接收一個(gè)列表作為參數(shù),但是 append 方法是將其作為一個(gè)元素添加到列表中,而 extend 則是將新列表的元素逐個(gè)添加到原列表中。

insert

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

看看例子:

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

pop

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

看看例子:

>>> 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 方法用于移除列表中的某個(gè)匹配元素,如果有多個(gè)匹配,則移除第一個(gè)。

看看例子:

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

reverse

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

看看例子:

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

sort

sort 方法用于對(duì)列表進(jìn)行排序,注意該方法會(huì)改變?cè)瓉?lái)的列表,而不是返回新的排序列表,另外,sort 方法的返回值是空。

看看例子:

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

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

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

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

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

該參數(shù)對(duì) 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ù),它為每個(gè)元素創(chuàng)建一個(gè)鍵,然后所有元素按照這個(gè)鍵來(lái)排序,比如我們想根據(jù)元素的長(zhǎng)度來(lái)排序:

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

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

看看例子:

>>> students = [
        ('john', 'B', 15),
        ('jane', 'A', 12),
        ('dave', 'B', 10),
        ('ethan', 'C', 20),
        ('peter', 'B', 20),
        ('mike', 'C', 16)
    ]
>>>
# 對(duì)第 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)]

# 對(duì)第 2 列排序(從小到大),再對(duì)第 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)于排序的知識(shí),可以參考此文。

小結(jié)

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

參考資料