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)
列表中常用的函數和方法有
函數
- append:追加元素
- count: 元素在列表中出現的次數
- index,元素在列表中第一次出現的位置
- pop :移除最後一個元素,並且返回
- remove(obj): 移除第一個匹配項
- 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]
- 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)) #深拷貝,不會改變原來的值
- 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)