8.2 列表
-
什么是列表?
-
列表和C语言,Java中的数组类似,它是python中的一种引用数据类型
-
不同于数组的是,数组只能存放一种数据类型,而列表可以存放不同类型的数据类型
-
其不仅具有堆栈的性质,还附有队列的性质,应用非常的灵活,同样也是python中序列的一种
-
列表的字面量定义方法用[]
list1 = [] # 这样就可以直接定义了一个空列表
list2 = [1,2,True,"str",1.0]
- 列表的常用方法:
方法 | 描述 |
---|---|
list.append(x) | 把一个元素添加到列表的结尾,相当于 a[len(a):] = [x]。 |
list.extend(L) | 通过添加指定列表的所有元素来扩充列表,相当于 a[len(a):] = L。 |
list.insert(i, x) | 在指定位置插入一个元素。第一个参数是准备插入到其前面的那个元素的索引,例如 a.insert(0, x) 会插入到整个列表之前,而 a.insert(len(a), x) 相当于 a.append(x) 。 |
list.remove(x) | 删除列表中值为 x 的第一个元素。如果没有这样的元素,就会返回一个错误。 |
list.pop([i]) | 从列表的指定位置移除元素,并将其返回。如果没有指定索引,a.pop()返回最后一个元素。元素随即从列表中被移除。(方法中 i 两边的方括号表示这个参数是可选的,而不是要求你输入一对方括号,你会经常在 Python 库参考手册中遇到这样的标记。) |
list.clear() | 移除列表中的所有项,等于del a[:]。 |
list.index(x) | 返回列表中第一个值为 x 的元素的索引。如果没有匹配的元素就会返回一个错误。 |
list.count(x) | 返回 x 在列表中出现的次数。 |
list.sort() | 对列表中的元素进行排序。 |
list.reverse() | 倒排列表中的元素。 |
list.copy() | 返回列表的浅复制,等于a[:]。 |
- 列表方法解析
list1 = [] # 列表的定义
list2 = list() # 这样也可以定义一个空列表
# 增加数据
list1.append(1) # 在列表的尾部追加一个数据
print(list1)
list2.append("hello")
# list1.extend(list2) # 实现列表的拼接
list1 = list1 + list2 # 实现列表的拼接,单独使用时会引起pycharm的一些小bug,不影响程序执行
print(list1)
list2.insert(0, 1.5)
# 第一个参数是索引位置,第二个是要插入的值,在该位置插入后,其余的元素会自动往后移一位
print(list2)
# list2[2] = "你好" # 不支持 index out of range
print("=" * 35)
# 查询读取
print(list1[0]) # 通过索引读取列表的值
print(list1[-1]) # 除了从前往后读取,还支持从后往前读取 -可以取到最后一位
print(list2.index("hello")) # 查找列表中是否包含某个元素,如包含则返回索引,不包含则报错
print("=" * 35)
# 删除
a = list2.pop() # 当不指定参数时默认取出最后一个,这里有点像堆栈,后进先出,同时取出来的元素可以用变量接收
# 当指定参数时,取出对应索引位置上的元素
print(a)
print(list2)
list2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1]
list2.remove(1) # 从左往右,如果找到目标就将其删除,而且只会删除一个目标,如果没有找到就会返回一个错误,
print(list2)
list2.clear() # 清空列表
print(list2)
print("=" * 35)
# 其他方法
list2 = [1, 2, 3, 4, 5, "6", 7, 8, 6, 6, "9"]
print(list2.count("1")) # 统计某元素的个数,不会报错,不存在则返回0
print(list2.count(6)) # 2 存在则返回其个数
list1 = list2.copy() # 复制一个列表,做备份时会用到
print(list1)
list1.remove("6")
list1.remove("9")
list1.sort() # 对列表元素进行排序(默认升序排序),如果列表元素有多种不同数据类型的数据则会报错
print(list1)
list2.sort(key=int) # 如果硬要对不同数据类型的元素进行排序的话就要指定,就要指定参数key作为比较依据
print(list2)
list2.sort(key=int, reverse=True) # 如果要进行降序排序,则给reverse参数 设置为 True
print(list2)
list2.reverse() # 翻转列表
print(list2)
-
列表的切片与字符串切片用法一致
-
列表是序列,所以它是有序可以迭代的,可以用for循环进行遍历
-
列表推导式,小技巧
# 切片
list1 = [1, 2, 3, 45, 7, 8, 9]
li2 = list1[0:-1]
print(li2)
# 遍历
for item in li2:
print(item)
# 其他技巧(python分别新手和老手一看便知)
# 列表推导式
li3 = [i for i in range(10)] # 快速创建一个 0 ~ 9的列表
print(li3)
li4 = [i for i in range(100) if i % 2 == 0] # 快速创建一个列表,0~99内的偶数
print(li4)
li5 = [i * 10 for i in range(1, 10)] # 创建一个列表其元素为 10,20,30,40....90
print(li5)