6. Python List全解析

List詳解

  • 類型
  • 訪問
  • 更新
  • 刪除
  • 腳本操作符 + *
  • 列表的截取
  • 列表的嵌套
  • 列表的函數和方法

1. 類型

python中所有的變量都屬於某個class, 如False, int, float, 當然list也屬於python中list類

# 基本類型
a,b,c,d,e= 1, 1.0, False, 'ab', complex(1.0)
print('Type {}: {}, Type {}: {}, Type {}: {}, Type {}: {}, Type {}: {}'.format(\
	a, type(a),b, type(b), c, type(c), d, type(d), e, type(e)))
# 所以python中任意一個變量都是屬於一個類的
Type 1: <class 'int'>, 
Type 1.0: <class 'float'>, 
Type False: <class 'bool'>, 
Type ab: <class 'str'>, 
Type (1+0j): <class 'complex'>
#

同樣list屬於什麼類呢

a = [1, 2, 3]
print('Type {}: {}'.format(a, type(a)))
# Type [1, 2, 3]: <class 'list'>

2. 訪問

list訪問使用中括號[]進行訪問

a = [1,2,3]
print(a[1]) #下表是從0開始計數,結果爲2

3. 更新

list使用中括號進行更新[]

a = [1, 2, 3]
a[1] = 10000
print(a)  # [1, 10000, 2]

4.刪除

使用del list[index]刪除對應index的元素

a = [1, 2,  3]
del a[2]
print(a) # [1, 2]

5. 常用操作符

常用操作符有兩個一個是+一個是*
+表示列表的連接
*表示列表的重複

判斷元素是否在列表中in

a = [1, 2]
b = [2, 3]
print(a + b) # [1, 2, 2, 3]
print(a * 2) # [1, 2, 1, 2]
print(1 in a) # True

6. 列表的截取

列表截取,從前到後,下表開始我0, 從後往前,下表開始爲-1

a = [1, 2, 3]
print(a[1])  # 2
print(a[-1]) # 3

7. 嵌套列表

即列表中可以放列表

a = [1, 2, 3]
b = [1, 2, 5]
c = [a, b] # [[1, 2, 3], [1, 2, 5]]

8. 常用的函數和方法

首先需要區分函數和方法
函數:

  • 內置函數, 內置函數專門弄一個blog進行記錄
  • 匿名函數, 以_開頭,只有類中可以使用

方法: 首先方法分爲靜態方法屬性方法實例方法
靜態方法:使用裝飾器@staticmethod
屬性方法:使用裝飾器@property, 把一個方法變成屬性的調用形式
實例方法:不用任何裝飾器,函數參數爲self

class Dog():
    def __init__(self, name):
        self.name = name
    # static method,可以使用或者類進行調用
    @staticmethod
    def eat():
        print('eat')

    #屬性方法,用來代替setter和getter方法
    @property
    def get_name(self):
        return self.name

    # 實例方法,只能通過實例進行調用
    def set_name(self, name):
        self.name = name

Dog.eat()
g = Dog('jack')
print(g.get_name)

g.set_name('rose')
print(g.get_name)

列表中常用的函數和方法有
函數

  1. append:追加元素
  2. count: 元素在列表中出現的次數
  3. index,元素在列表中第一次出現的位置
  4. pop :移除最後一個元素,並且返回
  5. remove(obj): 移除第一個匹配項
  6. reverse(), 對列表進行翻轉
a = [1, 1, 2, 2]
a.append(3)
print(a) #[1, 1, 2, 2, 3]
print(a.count(2)) # 含有兩個2
print(a.index(2)) # 5

b = a.pop()
print(b) # 3
print(a) # [1, 1, 2, 2]

a.reverse()
print(a) # [2, 2, 1, 1]
  1. copy(): 深拷貝,相當於a[:]
    這個和numpy的結果是完全不一樣的,numpy中也有copy表示深拷貝,但是numpy中a[:]表示創建一個view, 會改變原來的值,相當於引用
a = [1, 2, 3]
b = a.copy() # a.copy和a[:]是一樣的
print('a: {}, b: {}'.format(a, b))
b[1] = 100
print('a: {}, b: {}'.format(a, b)) #深拷貝,不會改變原來的值

import numpy as np
a = np.array([1, 2, 3])
b = a.copy()  #a.copy()和a[:] 不一樣,a[:]數據共用但是屬性可以進行改變
print('a: {}, b: {}'.format(a, b))
b[1] = 100
print('a: {}, b: {}'.format(a, b)) #深拷貝,不會改變原來的值
  1. list.sort(key=None, reverse=False)
a = [(1 ,2), (0,3)]
a.sort()
print(a)   #按照默認的排序方法,reverse=False

def get_ele(a):
    return a[1]

a.sort(key=get_ele)  #按照key進行排序
print(a)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章