Python列表和鴨子型別

2021-08-19 13:53:21 字數 1850 閱讀 2826

列表可以說是python最重要的資料結構,因為python具有正交性,所以我們可以從list中的特性推測出其他資料結構的基本的特性。python具備了鴨子特性和,讓其語言具有極強的表達性。

1   list()函式

list(obj)可以把一切序列轉換為list。同時我們可以推測只要是序列,所以obj可以是字串,元組和任何可以迭代的序列。同時我們可以推測具有tuple(),map()等型別函式。

2 基本的列表操作

2.1 賦值

x = [ 0,1,2]

x [1] = 2

2.2 刪除元素

del x[0]

2.3 分片賦值

可以同時對多個元素賦值,也可以使用與原序列不等長的序列將分片替換。

更強大的是分片賦值可以在不需要替換任何原有元素的情況下插入新元素。

x [1:1] = [2,3,4]

2.4 列表方法

list = [1,2,3]

2 count

count方法用於統計元素在列表中出現的次數。

list .count()

3 extend

extend 方法可以在列表的末尾追一次性追加另乙個序列中的多個值。可以用乙個列表擴充套件另乙個列表。

a = [1,2,3]

b = [4,5,6]

a.extend(b)

這樣的效率高於 a = a+ b

4 index

index 方法用於在列表中找出和引數匹配項的索引位置。

5 insert

將物件插入list中。也可以用分片賦值來實現。

6 pop

pop方法會移除列表中的乙個元素,(預設是最後乙個)並返回該元素的值。

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

>>>x.pop()

>>>x

[1,2]

>>>x.pop[0]

>>>x

[2]pop方法是唯一乙個能修改列表又返回元素值的列表方法。

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

>>>x

[1,2,3]

7 remove()

remove方法用於移除列表中的第乙個匹配項:

8 reverse()

將列表中的元素反向存放。

9 sort()

sort方法用於在原位置對列表進行排序。意味著改變原來的列表。所以有時想要得到一張已排序的列表,又不希望破壞本來的

列表,可以用sorted(obj).在python中既不是傳值也不是傳址,傳的是物件的引用。這是很重要的性質。所以對於列表這樣的可變物件來說

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

>>>list2 = [

10 高階排序

如果希望元素按照特定的方式進行排序(而不是sort函式預設的方式,即根據python的預設排序規則按公升序排列元素)那麼可以通過compare(x,y)的形式自定義比較函式,compare(x,y)函式會在x < y 時返回負數,在 x > y時返回正數,則在 x = y 則返回0。定義好函式之後,就可以把函式提供給sort方法作為引數,內建函式的cmp就是按照這樣實現的。

>>>cmp(42,32)

>>>cmp(99,100)

>>>cmp(10,10)

>>>numbers = [5,2,9,7]

>>>numbers.sort(cmp)

>>>numbers

[2,5,7,9]

sort方法有另外兩個可選的引數———key和reverse,如果要使用它們,那麼就需要通過名字來指定。(關鍵字引數)

key和cmp類似———必須提乙個在排序過程中使用的函式。另乙個關鍵字引數是簡單的布林值。(true和flase)來指明列表是否要繼續進行反向排序。

python 多型和鴨子型別

多型 class animal def say self print 動物在叫 class people animal def say self super say print 嚶嚶嚶 class dog animal def say self super say print 汪汪汪 class p...

python的鴨子型別

這次簡單介紹下 鴨子型別的概念。當看到乙隻鳥走起來像鴨子 游泳起來像鴨子 叫起來也像鴨子,那麼這只鳥就可以被稱為鴨子。鴨子型別關注點在物件的行為,而不是型別。在 python 和 go 中都可以實現鴨子型別。示例 如下 class duck def init self,name self.name ...

Python多型 鴨子型別

多型指的是一類事物有多種形態。動物有多種形態 人,狗,豬 import abcclass animal metaclass abc.abcmeta 同一類事物 動物 abc.abstractmethod deftalk self pass class people animal 動物的形態之一 人 ...