Python數據類型-list

Python-List詳解python


列表(list)做爲python的一種數據類型,經常使用它進行一些複合數據的分組,list的形式是[value1,value2,value3,value4....valuen],list的每項數據不須要是同一類型,能夠是任意的python數據類型。app

>>> l1 = [1,2,3,'name',[1,2,3],{'age':18},(1,2,3)]ide

>>> l1函數

[1, 2, 3, 'name', [1, 2, 3], {'age': 18}, (1, 2, 3)]spa


list列表中的每一個元素是根據索引來進行位置標識,能夠經過指定索引範圍的方式來獲得想要的數據。對象

索引的第一位從0開始,最後一位能夠用-1表示,倒數第二位用-2表示,如此類推。排序


#可使用lst[index]的方式得到指定索引元素的值。索引

>>> l2內存

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]element

>>> l2[5]

5

>>> l2[1]

1

>>> l2[-1]

9

>>> l2[-3]

7


list列表的切片操做:

切片操做是python中對有序的數據類型最多見的一種操做,經過元素索引得到索引範圍內的一段數據。

經常使用格式爲:

lst[startindex:endindex:step]

起始索引:結束索引:步長,步長爲正數時,表示index+step,索引爲負數時爲index-step。

步長爲可選選項,不設置默認步長爲1


#python中的索引切片操做都是(n:m]的規則,即包含n不包含m,這點須要注意。

>>> l2

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

l2[0:5]表示,從索引0開始取,直到索引5爲止,但不包括索引5。即索引0,1,2,3,4,正好是5個元素。

>>> l2[0:5]

[0, 1, 2, 3, 4]


#步長爲2,每2位取一位數據。

>>> l2[0:5:2]

[0, 2, 4]


#經過切片反轉列表

>>> l5

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> l5[::-1]

[10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]



#[:]這種形式下,startindex不指定默認爲的第一個索引(0),endindex不指定,表示取startindex到列表的最後一個元素。

>>> l2[:]

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

#列表的複製

>>> a = l2[:]

>>> a

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> id(a)

139895940789768

>>> id(l2)

139896080732808


>>> l3 = l1[3:]+l2[:5]

>>> l3

['name', [1, 2, 3], {'age': 18}, (1, 2, 3), 0, 1, 2, 3, 4]

>>> 


#列表爲可變序列,列表中的元素都是可變的,可使用lst[index]=newvalue的方式來改變lst中元素的值

>>> l3

['name', [1, 2, 3], {'age': 18}, (1, 2, 3), 0, 1, 2, 3, 4]

>>> l3[1] = 'age'

>>> l3

['name', 'age', {'age': 18}, (1, 2, 3), 0, 1, 2, 3, 4]

>>> 


#使用列表切片複製,能夠改變列表中一段的元素,或者徹底能清空列表。

>>> l3

['name', 'age', {'age': 18}, (1, 2, 3), 0, 1, 2, 3, 4]

>>> l3[2:4]=['newvalue1','newvalue2']

>>> l3

['name', 'age', 'newvalue1', 'newvalue2', 0, 1, 2, 3, 4]

>>> l3[-2:-1]

[3]


#切片賦值不須要索引個數等於newvalue的個數。

>>> l3[-2:-1]=['test1','test2','test3']

>>> l3

['name', 'age', 'newvalue1', 'newvalue2', 0, 1, 2, 'test1', 'test2', 'test3', 4]


#在指定索引位置插入一些數據。

>>> l4 = [1,2,3]

>>> l4[1:1] = ['new values',' new test',(1,2,3)]

>>> l4

[1, 'new values', ' new test', (1, 2, 3), 2, 3]


#在開始位置插入本身自己。

>>> l4[:0] = l4

>>> l4

[1, 'new values', ' new test', (1, 2, 3), 2, 3, 1, 'new values', ' new test', (1, 2, 3), 2, 3]


#清空列表

>>> l4[:] = []

>>> l4

[]


可使用內建函數len查詢list的長度。

>>> l5

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> len(l5)

11

>>>


列表的方法

列表是可變的數據類型,python爲其提供了一些方法,來對列表進行處理。

#爲列表增長元素。

 |  append(...)

 |      L.append(object) -> None -- append object to end

 在列表結尾追加元素,沒有返回值。


>>> l1 = [1,2,3,4,5]

>>> l1.append(6)

>>> l1

[1, 2, 3, 4, 5, 6]


#清空列表,等效於l1[:]=[]。

 |  clear(...)

 |      L.clear() -> None -- remove all items from L

 清空獵的全部元素,沒有返回值,

>>> l1

[1, 2, 3, 4, 5, 6]

>>> l1.clear()

>>> l1

[]

>>>


#列表拷貝,等效於l2=l1[:]

 |  copy(...)

 |      L.copy() -> list -- a shallow copy of L

 列表的一個淺拷貝,返回一個新的list對象,拷貝生成的新對象,是在內存在從新定義的,跟原list沒關聯,因此淺拷貝和l2=l1這種賦值的形式是不一樣的。

>>> l2 = l1.copy()

>>> l2

[1, 2, 3, 4]

>>> l1

[1, 2, 3, 4]

>>> id(l1)

139895940823496

>>> id(l2)

139895940874312


#列表元素計數

 |  count(...)

 |      L.count(value) -> integer -- return number of occurrences of value

 統計value在列表中出現的次數,返回次數的數值(integer)。

>>> l3

[1, 2, 2, 2, 2, 2, 3, 4, 5, 6, 7, 8, 9]

>>> l3.count(2)

5


#列表追加可迭代對象。

 |  extend(...)

 |      L.extend(iterable) -> None -- extend list by appending elements from the iterable

 用可迭代對象的元素來追加到列表,無返回值,這類可迭代對象但是list、str、dict等


>>> l1

[1, 2, 3, 4]

>>> t1=(1,2,3)

>>> l1.extend(t1)

>>> l1

[1, 2, 3, 4, 1, 2, 3]

#可迭代對象爲字典時,只會使用字典的key進行迭代添加。

>>> d1={'name':'zj','age':18}

>>> l1.extend(d1)

>>> l1

[1, 2, 3, 4, 1, 2, 3, 'name', 'age']

>>> s1="python"

>>> l1.extend(s1)

>>> l1

[1, 2, 3, 4, 1, 2, 3, 'name', 'age', 'p', 'y', 't', 'h', 'o', 'n']

>>> 



#查找list中指定元素的索引

 |  index(...)

 |      L.index(value, [start, [stop]]) -> integer -- return first index of value.

 |      Raises ValueError if the value is not present.

 查找元素索引第一次出現的位置,返回索引的數字,若是指定的元素不存在則拋出一個ValueError的異常。

 [start,[stop]]爲可選參數,表示在指定的索引範圍內查找元素,start爲開始索引,stop爲結束索引,包含start,不包含stop。

>>> l1 = [1,2,3,4,5,6,7,2,8,9,10]

>>> l1.index(2)

1

>>> l1.index(2,3,10)

7

>>> 


#list插入元素,等效於lst[index:index]=[value]

 |  insert(...)

 |      L.insert(index, object) -- insert object before index

 在指定的索引位置前插入元素


>>> l5.insert(3,999)

>>> l5

[0, 1, 2, 999, 3, 4, 5, 6, 7, 8, 9, 10, 11]

>>> l5[3:3]=[999]

>>> l5

[0, 1, 2, 999, 999, 3, 4, 5, 6, 7, 8, 9, 10, 11]

>>> 


#刪除列表指定位置的元素, 並返回它. 若是沒有指定索引, a.pop 移除並返回列表的最後一個元素.

 |  pop(...)

 |      L.pop([index]) -> item -- remove and return item at index (default last).

 |      Raises IndexError if list is empty or index is out of range.

 刪除並返回指定索引的元素(不指定index,默認刪除返回最後一個元素)

 若是列表爲空,或者超出索引範圍,則拋出一個IndexError異常。

 (函式原型的 [index] 在中方括號中,意味着它是一個可選參數, 而不是你應當在那裏鍵入一個方括號. 你將會在 Python 庫參考中常常見到這種表示法.)

>>> l6=[1,2,3,4,5,6,7]

>>> l6.pop()

7

>>> l6.pop(3)

4

>>> l6.pop(8)

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

IndexError: pop index out of range

>>>


#刪除指定的元素

 |  remove(...)

 |      L.remove(value) -> None -- remove first occurrence of value.

 |      Raises ValueError if the value is not present.

刪除list中第一次出現的指定元素值,沒有返回值,若是列表中有多個該元素,只會刪除第一個。

若是指定刪除的元素不存在,會拋出一個ValueError的異常

>>> l7=[1, 2, 3, 4, 5, 2, 2, 2, 6, 7, 8]

>>> l7.remove(2)

>>> l7

[1, 3, 4, 5, 2, 2, 2, 6, 7, 8]

>>> l7.remove(10)

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

ValueError: list.remove(x): x not in list

>>> 


#反轉列表

 |  reverse(...)

 |      L.reverse() -- reverse *IN PLACE*

 就地反轉列表,沒有返回值。

>>> l8 = [1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> l8.reverse()

>>> l8

[9, 8, 7, 6, 5, 4, 3, 2, 1]


#列表排序

 |  sort(...)

 |      L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*

 就地列表進行排序,沒有返回值,

 key爲指定排序方式,默認爲空,reverse爲是否對結果進行反轉,默認爲不反轉

>>> l9=[2, 1, 3, 6, 5, 4, 9, 8, 7, 1]

>>> l9.sort()

>>> l9

[1, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> l9=[2, 1, 3, 6, 5, 4, 9, 8, 7, 1]

>>> l9.sort(re)

repr(      return     reversed(  

>>> l9.sort(reverse=True)

>>> l9

[9, 8, 7, 6, 5, 4, 3, 2, 1, 1]

>>> 

相關文章
相關標籤/搜索