Python学习笔记8_列表(List)
文章目录
- 列表是最常用的 Python 数据类型,它可以作为一个方括号内的逗号分隔值出现。
- 列表的数据项不需要具有相同的类型
- 创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。
1、访问列表中的值
- 与字符串的索引一样,列表索引从 0 开始,第二个索引是 1,依此类推。通过索引列表可以进行截取、组合等操作。
- 索引也可以从尾部开始,最后一个元素的索引为 -1,往前一位为 -2,以此类推。
- 使用下标索引来访问列表中的值,同样你也可以使用方括号 [] 的形式截取字符
2、列表添加元素的方法
使用 append、insert、extend 方法
- append 在列表末尾添加元素
- insert 指定位置插入元素
- extend 合并两个列表(可迭代对象)
3、列表删除元素的方法
使用 pop、remove、clear 的方法
- pop 默认删除最后一个元素,也可传入index参数,用来删除指定位置的元素
- remove 删除指定元素
- clear 清空列表
- 使用 del 也可以删除数据
4、列表修改元素的方法
使用下标直接修改对应元素
5、 列表查找元素的方法
使用 index、count 的方法和成员运算符 in
- index 查找元素并返回元素的下标,如果元素不存在就会报错
- count 查找元素出现的次数,并返回 int 值
x = ['h','e','l','l','o']
print(x.index('o')) # 4
# print(x.index('t'))
print(x.count('l')) # 2
print('h' in x) # True
print('k' in x) # False
6、列表的遍历
遍历常用的方法有while和for…in…语句
shooter = ['后羿', '黄忠', '虞姬', '公孙离', '狄仁杰','孙尚香', '李元芳','百里守约', '鲁班七号']
i = 0
while i < len(shooter)
print(shooter[i])
i++
shooter = ['后羿', '黄忠', '虞姬', '公孙离', '狄仁杰','孙尚香', '李元芳','百里守约', '鲁班七号']
#for..in..的本质是调用面向对象的next方法
for i in shooter
print(i)
# 使用内置函数enumerate()进行带下标的遍历
for i, people in enumerate(shooter):
print('第%d个是%s' % (i,people))
7、列表的复制
1)直接赋值(这不是复制)
x = [10,20,30]
y = x # y 和 x 指向同一个内存地址
x[0] = 1 # 修改 x ,y也会随着改变
2)调用列表的 copy 方法
x = [10,20,30]
z = x.copy() # y 和 x 指向不同内存地址
x[0] = 1 # 修改 x ,z不会随之改变
3)调用copy模块
import copy
x = [10,20,30]
a=copy.copy(x) #效果等价于copy方法,都是一个浅拷贝
x[0]=1 # 修改x,y 不会改变
4)使用切片进行拷贝
x = [10,20,30]
y = x[:] # 切片也是一个浅拷贝
x[0] = 1 # 修改x,y 不会改变
7、列表排序
7.1、使用各种排序算法
冒泡排序、快速排序,归并排序、插入排序、选择排序、堆排序、基数排序、希尔排序等算法
7.2、调用列表的 sort 方法可以直接对列表进行排序
nums = [5,9,3,4,7,0,2,1,6,8]
nums.sort() #默认为正序
print(nums)
nums.sort(reverse=True) #添加 reverse=True 参数为逆序
print(nums)
7.3、使用内置函数 sorted ,生成一个新的有序列表,不会改变原来的列表
nums = [5,9,3,4,7,0,2,1,6,8]
x = sorted(nums)
print(nums)
print(x)
8、列表反转
8.1、使用列表的 reverse 方法列表进行反转
names = ['张三','李四','王五']
names.reverse()
print(names)
8.2、使用下标和切片输出
names = ['张三','李四','王五']
print(names[::-1])
9、嵌套列表
嵌套列表即在列表里创建其它列表,类似于C语言的二维数组
10、列表推导式
用一个简单的代码创建一个列表
x = [i for i in range(10)]
pront(x) # [0,1,2,3,4,5,6,7,8,9]
t = [i for i in range(10) if i % 2 == 0]
print(t) # [0,2,4,6,8]
# points 是一个列表,里面元素都是元组
points = [(x,y) for x in range(5,10) for y in range(10,20)] # for语句是嵌套的
print(points) # 共有 50 个元素
11、Python列表函数&方法
函数 | 描述 |
---|---|
len() | 返回列表元素个数 |
max() | 返回列表元素最大值 |
min() | 返回列表元素最小值 |
list() | 将元组转换为列表 |
方法 | 描述 |
---|---|
append() | 在列表末尾添加新的对象 |
count() | 统计某个元素在列表中出现的次数 |
extend() | 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) |
index() | 从列表中找出某个值第一个匹配项的索引位置 |
insert() | 将对象插入列表 |
pop() | 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 |
remove() | 移除列表中某个值的第一个匹配项 |
reverse() | 反向列表中元素 |
sort() | 对原列表进行排序 |
clear() | 清空列表 |
copy() | 复制列表 |