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)