列表的基本使用
定义列表的格式:[元素1,元素2,元素3, … ,元素n ]
列表内的元素可以是不同类型的
列表内的元素是有序可变的,可以使用下标来对元素进行切片和修改
列表(list)是一个可迭代对象
# 字符串转列表
name = list('张三') # print => ['张', '三']
# 元组转列表
name = list(('蒙犽', '后羿', '鲁班', '孙尚香')) # print => ['蒙犽', '后羿', '鲁班', '孙尚香']
列表的增删改查
# 添加
list.append(value) # 在列表最后添加
list.insert(index, value) # 在索引位置添加元素(从零开始)
list.extend(iterable) # 将可迭代对象相加
# 删除
x = list.pop(index) # 弹出索引位置的数据,默认为最后一个数据(从0计数)
list.remove(value) # 删除指定值的数据, 元素不存在报错
list.clear() # 清空列表
del list(index) # 使用del运算符删除指定位置的元素(尽量别用)
# 查询
list.index('value') # 返回元素索引,不存在报错
list.count('value') # 返回元素个数
'value' in list # 判断元素是否在列表内
# 修改
list[index] = new_value
# 复制
列表的遍历
# for....in 本质为不断的调用迭代器的next方法
for value in list:
......
# while
i = 0
while i < len(list)
......
i += 1
列表排序&反转&复制
# 排序
list.sort() # 正序 改变原有列表
list.sort(reverse=True) # 倒序
new_list = sorted(list) # 生成新的列表
# 反转
list.reverse() # 颠倒列表内元素顺序 == list[::-1]
# 复制
a = 1
b = a
a = 2
print(b) # print => 1
list1 = [1, 2, 3]
list2 = list1
list1[0] = 4
print(list2) # print => [4, 2, 3]
# python 里的数据都是保存在内存里的
# python 里的数据分为可变类型和不可变类型
# 不可变类型:字符串、数字、元组 修改时新建一块内存,存储新值。原内存值不变
# 可变类型:列表、字典、集合 修改时内存地址内的值
# 赋值 == 指向地址
y = x # x 和 y 指向同一块内存空间 修改x会影响z
# 列表的浅复制 切片就是一个浅拷贝
z = x.copy() # x 和 z 内容一样,但指向不同的内存空间 修改x不影响z
import copy
a = copy.copy(x) # 等价于x.copy() 同样都是浅拷贝
# 深拷贝
# 求最大数
# 1.生取最后一个
list.sort()
list[-1]
# 2. 降序取第一个
list.sort(reverse=True)
list[0]
# 3.假设法:取列表中第一个数x,与列表中的数一个个对比,若该数b比x大,则将该数赋给x
# 删除列表中的空字符串
# 1.for 循环删除
# 注意:在使用for....in时 尽量不要对元素进行增删操作
for val in list:
if val == '':
words.remove(val)
# 2.whil 循环
i = 0
whil i < len(list):
if list[i] == '':
list.remove(list[i])
i -= 1
i += 1
# 3.生成新列表
i = 0
while i < len(list):
if val != '':
list2.append(val)
列表的嵌套
list = [val, val, [list2], val, val] # 类似多维数组
# 使用for 循环进行带下标的遍历 i 为下标
for i, val in enumerate(list):
........
列表推导式
# 使用简单的列表实现列表的创建
list = [i for i in range(10)]
# 列表推导式加条件
list = [i for i in range(10) if i % 2 == 0]
# 双循环
list = [(x, y) for x in range(5, 9) for y in range(10, 20)]
列表的复制
# 深拷贝和浅拷贝
# 浅拷贝
list = list1.copy() # 浅拷贝,内容一样但不是同一个对象
list = copy.copy(list1)
# 在列表嵌套中,浅拷贝只拷贝一层,内层嵌套的列表使用的是内存指向的方式
# 深拷贝 完全复制
list = copy.deepcopy(list1)
元组
# 元组: 用于表示多个数据,与列表类似 tuple = (val, val, .., val)
# 区别: 列表元素可变, 元组元素不可变
# 只有index 和 count
tuple.index(val) # 查找元素的下标
tuple.count(val) # 查看元素的出现次数
# 其他类型转元组
tuple(iter) # 需要传入可迭代对象
# 列表转元组
tuple(list)
list(tuple)
# 字符串连接元组
'*'.join(tuple) # 元组内的元素必须为字符串, 字符串以*分割
# 元组遍历
for i in tuple:
.......