Python——列表,元組
一、簡介
列表(list)是Python以及其他語言中最常用到的數據結構之一。Python使用使用中括號 [ ] 來解析列表。列表是可變的(mutable)——可以改變列表的內容。
二、基本的列表操作
列表可以使用所有適用于序列的標準操作,例如索引、分片、連接和乘法。本文介紹一些可以改變列表的方法。
1. list 函數
通過 list(seq) 函數把一個序列類型轉換成一個列表。
- >>>?list('hello')
- ['h',?'e',?'l',?'l',?'o']
list 函數使用于所有類型的序列,而不只是字符串。
2. 改變列表:元素賦值
使用索引標記來為某個特定的、位置明確的元素賦值。
- >>>?x?=?[1,?1,?1]
- >>>?x[1]?=?2
- >>>?x
- [1,?2,?1]
不能為一個位置不存在的元素進行賦值。
3. 刪除元素
從列表中刪除元素也很容易:使用 del 語句來實現。
- >>>?names?=?['Alice',?'Beth',?'Cecil',?'Dee-Dee',?'Earl']
- >>>?del?names[2]
- >>>?names
- ['Alice',?'Beth',?'Dee-Dee',?'Earl']
除了刪除列表中的元素,del 語句還能用于刪除其他元素。
4. 分片賦值
- >>>?name?=?list('Perl')
- >>>?name
- ['P',?'e',?'r',?'l']
- >>>?name[2:]?=?list('ar')
- >>>?name
- ['P',?'e',?'a',?'r']
在使用分片賦值時,可以使用與原序列不等長的序列將分片替換:
- >>>?name?=?list('Perl')
- >>>?name[1:]?=?list('ython')
- >>>?name
- ['P',?'y',?'t',?'h',?'o',?'n']
分片賦值語句可以在不需要替換任何原有元素的情況下插入新的元素。
- >>>?numbers?=?[1,?5]
- >>>?numbers[1:1]?=?[2,?3,?4]
- >>>?numbers
- [1,?2,?3,?4,?5]
通過分片賦值來刪除元素也是可行的。
- >>>?numbers
- [1,?2,?3,?4,?5]
- >>>?numbers[1:4]?=?[]
- >>>?numbers
- [1,?5]
三、列表方法
方法是一個與某些對象有緊密聯系的函數。一般,方法可以這樣進行調用:
對象.方法(參數)
除了對象被放置到方法名之前,并且兩者之間用一個點號隔開。
1. append
append方法用于在列表末尾追加新的對象:
- >>>?lst?=?[1,?2,?3]
- >>>?lst.append(4)
- >>>?lst
- [1,?2,?3,?4]
append方法和其他一些方法類似,只是在恰當位置修改原來的列表。這意味著,它不是簡單地返回一個修改過的新列表——而是直接修改原來的列表。
2. count
count 方法統計某個元素在列表中出現的次數:
- >>>?['to',?'be',?'or',?'not',?'to',?'be'].count('to')
- 2
- >>>?x?=?[[1,2],?1,?1,?[2,?1,?[1,?2]]]
- >>>?x.count(1)
- 2
- >>>?x.count([1,2])
- 1
3. extend
extend 方法可以在列表的末尾一次性追加另一個序列中的多個值。
- >>>?a?=?[1,?2,?3]
- >>>?b?=?[4,?5,?6]
- >>>?a.extend(b)
- >>>?a
- [1,?2,?3,?4,?5,?6]
extend 方法修改了被擴展的列表,而原始的連接操作(+)則不然,它會返回一個全新的列表。
- >>>?a?=?[1,?2,?3]
- >>>?b?=?[4,?5,?6]
- >>>?a.extend(b)
- >>>?a
- [1,?2,?3,?4,?5,?6]
- >>>
- >>>?a?+?b
- [1,?2,?3,?4,?5,?6,?4,?5,?6]
- >>>?a
- [1,?2,?3,?4,?5,?6]
4. index
index 方法用于從列表中找出某個值第一個匹配項的索引位置:
- >>>?knights?=?['We',?'are',?'the',?'knights',?'who',?'say',?'ni']
- >>>?knights.index('who')
- 4
當搜索不存在的值時,就會引發一個異常。
5. insert
insert 方法用于將對象插入到列表中:
- >>>?numbers?=?[1,?2,?3,?5,?6,?7]
- >>>?numbers.insert(3,?'four')
- >>>?numbers
- [1,?2,?3,?'four',?5,?6,?7]
6. pop
pop 方法會移除列表中的一個元素(默認是最后一個),并且返回該元素的值:
- >>>?x?=?[1,?2,?3]
- >>>?x.pop()
- 3
- >>>?x
- [1,?2]
- >>>?x.pop(0)
- 1
- >>>?x
- [2]
pop方法是唯一一個即能修改列表又返回元素值(除了None)的列表方法。
7. remove
remove 方法用于移除列表中某個值的第一個匹配項:
- >>>?x?=?['to',?'be',?'or',?'not',?'to',?'be']
- >>>?x.remove('be')
- >>>?x
- ['to',?'or',?'not',?'to',?'be']
- >>>?x.remove('bee')
- Traceback?(most?recent?call?last):
- ??File?"<stdin>",?line?1,?in?<module>
- ValueError:?list.remove(x):?x?not?in?list
只有第一次出現的值被移除,而不存在與列表中的值是不會移除的。
remove 是一個沒有返回值的原位置改變方法。它修改了列表卻沒有返回值。
8. reverse
reverse 方法將列表中的元素反向存放。
- >>>?x?=?[1,?2,?3]
- >>>?x.reverse()
- >>>?x
- [3,?2,?1]
該方法改變了列表但不返回值。
9. sort
sort 方法用于在原位置對列表進行排序。
- >>>?x?=?[4,?6,?2,?1,?7,?9]
- >>>?x.sort()
- >>>?x
- [1,?2,?4,?6,?7,?9]
sort 方法修改了 x 卻返回了空值。
四、元組:不可變序列
創建元組的語法很簡單:如果你用逗號分隔了一些值,那么你就自動創建了元組。
- >>>?1,?2,?3
- (1,?2,?3)
元組也是(大部分時候是)通過圓括號括起來的:
- >>>?(1,2,3)
- (1,?2,?3)
實現包括一個值的元組有些奇特——必須加個逗號:
- >>>?42,
- (42,)
- >>>?(42,)
- (42,)
tuple函數的功能與list函數基本上是一樣的:以一個序列作為參數并把它轉化為元組。
- >>>?tuple([1,?2,?3])
- (1,?2,?3)
除了創建元組和訪問元組元組之外,也沒有太多其他操作,可以參考其他類型的序列來實現。
元組的意義:元組可以在映射(和集合的成員)中當作鍵使用——而列表則不行;元組作為很多內建函數和方法的返回值存在。
http://haohuigou.com/73198.html