列表(list)與元組(tuple)


一、列表

列表是最常見的一種數據形式,是一種有序的序列,可以隨時添加和刪除其中的元素。它可以把大量的數據放在一起,可以對其進行集中處理。

列表是以方括號“[]”包圍的數據集合,不同成員間以“,”分隔。列表中可以包含任何數據類型,也可以包含一個列表。列表可以通過序號來訪問其中的成員。

1、列表內置方法

list.append(obj)

在列表末尾添加新的對象

list.clear()

刪除列表中的所有項,相當於 del a[:]

list.count(obj)

統計某個元素在列表中出現的次數

list.copy()

返回列表的一個淺拷貝

list.extend(seq)

在列表末尾一次性追加另一個序列中的多個值(用新列表擴展原來的列表)

list.index(obj)

從列表中找出某個值第一個匹配項的索引位置

list.insert(index, obj)

將對象插入列表

list.pop(obj=list[-1])

移除列表中的一個元素(默認最后一個元素),並且返回該元素的值

list.remove(obj)

移除列表中某個值的第一個匹配項

list.reverse()

反向列表中元素

list.sort([func])

對原列表進行排序

 

(1)list.append(obj)——在列表末尾添加新的對象

>>> l = ['python',3,7]
>>> l = ['c',3,6,2,'java',5.4]
>>> l
['c', 3, 6, 2, 'java', 5.4]
>>> l.append(6)
>>> l
['c', 3, 6, 2, 'java', 5.4, 6]

(2)list.clear()——刪除列表中的所有項,相當於 del a[:]

>>> l
['c', 3, 6, 2, 'java', 5.4, 6]
>>> l.clear()
>>> l
[]

(3)list.count(obj)——統計某個元素在列表中出現的次數

>>> l = ['c', 3, 6, 2, 'java', 5.4, 6]
>>> l.count(6)
2
>>> l.count('6')
0

(4)list.copy()——返回列表的一個淺拷貝

>>> l2 = l.copy()
>>> l2
['c', 3, 6, 2, 'java', 5.4, 6]

(5)list.extend(seq)——在列表末尾追加另一個序列中的多個值(用新列表擴展原來的列表)

>>> l
['c', 3, 6, 2, 'java', 5.4, 6]
>>> l.extend([2,'a'])
>>> l
['c', 3, 6, 2, 'java', 5.4, 6, 2, 'a']
>>> l.extend('python')
>>> l
['c', 3, 6, 2, 'java', 5.4, 6, 2, 'a', 'p', 'y', 't', 'h', 'o', 'n']

(6)list.index(obj)——從列表中找出某個值第一個匹配項的索引位置

>>> l
['c', 3, 6, 2, 'java', 5.4, 6, 2, 'a', 'p', 'y', 't', 'h', 'o', 'n']
>>> l.index(2)
3

(7)list.insert(index, obj)——將對象插入列表

>>> l
['c', 3, 6, 2, 'java', 5.4, 6, 2, 'a', 'p', 'y', 't', 'h', 'o', 'n']
>>> l.insert(5,7)
>>> l
['c', 3, 6, 2, 'java', 7, 5.4, 6, 2, 'a', 'p', 'y', 't', 'h', 'o', 'n']

(8)list.pop(obj=list[-1])——移除列表中的一個元素(默認最后一個元素),並且返回該元素的值

>>> l
['c', 3, 6, 2, 'java', 7, 5.4, 6, 2, 'a', 'p', 'y', 't', 'h', 'o', 'n']
>>> s = l.pop()
>>> l
['c', 3, 6, 2, 'java', 7, 5.4, 6, 2, 'a', 'p', 'y', 't', 'h', 'o']
>>> s
'n'

(9)list.remove(obj)——移除列表中某個值的第一個匹配項

>>> l
['c', 3, 6, 2, 'java', 7, 5.4, 6, 2, 'a', 'p', 'y', 't', 'h', 'o']
>>> l.remove(6)
>>> l
['c', 3, 2, 'java', 7, 5.4, 6, 2, 'a', 'p', 'y', 't', 'h', 'o']

(10)list.reverse()——反向列表中元素

>>> l
['c', 3, 2, 'java', 7, 5.4, 6, 2, 'a', 'p', 'y', 't', 'h', 'o']
>>> l.reverse()
>>> l
['o', 'h', 't', 'y', 'p', 'a', 2, 6, 5.4, 7, 'java', 2, 3, 'c']

(11)list.sort([func])——對原列表進行排序

>>> lst = [2,6,4,9,5]
>>> lst.sort()
>>> lst
[2, 4, 5, 6, 9]
>>> alst = ['hadoop','python','linux','java']
>>> alst.sort()
>>> alst
['hadoop', 'java', 'linux', 'python']
>>> alst.sort(key = len)
>>> alst
['java', 'linux', 'hadoop', 'python']

2、列表推導式

        推導式是Python中很強大的、很受歡迎的特性,具有語言簡潔,速度快等優點。推導式包括:列表推導式、字典推導式、集合推導式、嵌套列表推導式。

        列表推導式提供了一種創建列表的簡潔方法。列表推導式書寫形式:[表達式 for 變量 in 列表]    或者  [表達式 for 變量 in 列表 if 條件]

舉例:

(1)列表平方

>>> lst = [2,6,3,5,9]
>>> [ x**2 for x in lst]
[4, 36, 9, 25, 81]

(2)列表偶數

>>> [ x for x in lst if x%2 == 0]
[2, 6]

(3)移除元音字母

>>> s = 'this is list example'
>>> vowels = 'aeiou'
>>> [ i for i in s if i not in vowels]
['t', 'h', 's', ' ', 's', ' ', 'l', 's', 't', ' ', 'x', 'm', 'p', 'l']
>>> ''.join([ i for i in s if i not in vowels])
'ths s lst xmpl'

(4)求(x,y)其中x是0-5之間的偶數,y是0-5之間的奇數組成的元祖列表

>>> [(x,y) for x in range(5) if x%2 == 0 for y in range(5) if y%2 == 1]
[(0, 1), (0, 3), (2, 1), (2, 3), (4, 1), (4, 3)]

3、生成器表達式

        Python還支持另外一種和列表表達式類似的結構,叫做生成器表達式(generator expression),除了它有一種稱之為“惰性計算”的特點以外,它和列表推導式的用法基本一致。生成器表達式的語法和列表推導式一樣,只不過生成器表達式是被()括起來的,而不是[]。

        生成器表達式並不真正創建列表, 而是返回一個生成器,它的工作方式是每次處理一個對象,而不是一口氣處理和構造整個數據結構,這樣做的潛在優點是可以節省大量的內存。

>>> g = (i for i in range(10) if i%2)
>>> g
<generator object <genexpr> at 0x00000000036274C0>
>>> for i in g:
  print(i)
1 3 5 7 9

二、元組

元組可以看成一種特殊的列表,與列表不同的是元組一旦建立就不能改變,既不能改變其中的數據項,也不能添加和刪除數據項。

元組的基本形式是以圓括號“()”括起來的數據元素,可以通過序號來引用其中的元素。

1、元組的創建

創建空元組:

>>> t = ()
>>> t
()

需要注意的是,元組中只包含一個元素時,需要在元素后面添加逗號:

>>> t1 = (2,)
>>> t1
(2,)

2、元組的內置方法

tuple.count(obj)  統計某個元素在元組中出現的次數

tuple.index(obj)  從元組中找出某個值第一個匹配項的索引位置

>>> tup = (3,8,5,7,2,5)
>>> tup.count(5)
2
>>> tup.index(3)
0

 

 

 

參考文檔:

 <http://python.jobbole.com/80823/>

 <http://www.runoob.com/python/python-lists.html>

 


免責聲明!

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



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