4-列表使用及元组
列表的操作
- 遍历列表
- for n in list1
- for i, v in enumerate(list1)
- 从后向前遍历
- print(list(range(10, 1, -1)))
- for i in range(len(ages)-1, -1, -1):
- print(ages[i])
- 切片/截取
- print(ages[:])
- print(ages[2:])
- print(ages[::-1])
- 相当于倒序
- 合并
- list1 + list2
- 重复
-
- 判断成员
- print(n in list2)
列表的增删改查
- 增
- append() :在列表的末尾追加元素
- extend() :将另一个列表中的元素追加到当前列表
- ages = [2, 3, 4, 5]
- ages.extend([6, 7, 8])
- insert(index, element) :在指定的下标位置插入一个元素
- ages = [2, 3, 4, 5]
- ages.insert(2, 100)
- 删
- pop(index) :删除指定下标位置的元素,并返回该元素
- remove() :删除指定的元素
- clear() :清空列表
- del
- ages = [1, 34, 667, 86]
- del ages[:]
- 改
- ages = [1, 34, 667, 86]
- ages[0] = 100
- 查
- print(ages[0])
列表的高级方法
- 索引
- index(element, start,stop) :查找指定元素在列表中第一次出现的下标位置
- print(list1.index(3, 3, 6))
- 内置函数
- sum
- max
- min
- 排序
- 升序
- sort() :升序:从小到大
- list3.sort()
- sort() :升序:从小到大
- 降序
- list3.sort(reverse=True)
- sorted :排序,但是不会改变原列表,得到一个新列表
- list5 = sorted(list3, reverse=True)
- 倒序/逆序/反转
- list3 = [3, 1, 5, 10, 34]
- list3.reverse()
- reversed() :倒叙,但是不会改变原列表
- list4 = reversed(list3)
- list3 = [3, 1, 5, 10, 34]
- 升序
拷贝/复制
- 可变类型和不可变类型(基本类型和引用类型)
- 不可变类型int,float,str,tuple
- 可变类型list,dict,set
- 内存
- 内存:栈区,自动释放;堆区,不会自动释放
- 对于引用/可变类型,数据存在堆内存,栈内存存储堆内存的地址
- 浅拷贝(只能搞定一层拷贝)
- list5 = [1, 2, 3]
- list6 = list5.copy()
- list6[2] = 100
- print(list5, list6) # [1, 2, 3] [1, 2, 100]
- 深拷贝:不管有多少层,都可以拷贝
- import copy
- list5 = [1, 2, 3, [4, 5]]
- list6 = copy.deepcopy(list5) # 深拷贝
- list6[-1][-1] = 100
- print(list5, list6) # [1, 2, 3, [4, 5]] [1, 2, 3, [4, 100]]
- 二维列表
数学函数和随机数
- 绝对值
- print(abs(-3)) # 绝对值,3
- 四舍五入
- print(round(3.4327)) # 3print(round(3.34294, 4)) # 四舍五入,保留四位小数3.3429
- math模块
- print(math.pow(2, 3), pow(2, 3), 2 ** 3) # 8.0 8 8 求次方
- print(math.sqrt(4)) # 2 开平方根
- print(math.pi) # Π
- print(math.sin(math.pi/6)) # 正弦
- 随机数
- import random
- random.choice() :在列表中随机取一个元素
- random.randint(start, end) :取值范围[start, end]
- random.randrange(start, end, step) :取值范围[start, end)
- print(random.random()) # 取小数,范围[0, 1)
- print(random.uniform(2, 5)) # 取小数,范围[2, 5)
- random.shuffle(list1) # 乱序
tuple
-
元组和列表的区别
- 和列表类似
- 区别:①元组就是不可改变的列表. ②列表使用[],元组使用()
-
创建元组
- t = (1,) # 只有一个元素的元组,要加逗号
-
元组的基本操作
- print(t[0])= # 注意是中括号
-
排序和反转只能用sorted, reversed
-
元组中的列表时可以修改的
-
列表与元组的相互转换
- l = list(t)
-
快速取值
a, b, c = (1, 2, 3)
列表的其他内置函数
- filter过滤函数的作用是对列表进行过滤,只保留满足filter()函数指定要求的元素
- def f(x):
- return x % 2 != 0 and x % 3 != 0
- list(filter(f, range(2, 25)))
- def f(x):
- map映射函数的作用是对列表的每一个元素映射到map()函数指定的操作
- def cube(x):
- return xxx
- lsit(map(cube, range(1, 11)))
- def cube(x):
- reduce函数是reduce(function, sequence, starting_value),它对sequence中的item顺序迭代调用function,如果有starting_value,可以作为初始值调用
- def add(x, y):
- return x + y
- reduce(add, range(1, 11))
- def add(x, y):
列表推导式
- 对于使用过滤和映射函数去生成特定要求的列表,可以使用列表推导式简化代码
- [k*5 for k in a if k!= 3]