Python中List列表对象的学习
List(列表) 是 Python 中使用最频繁的数据类型。列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。列表是写在方括号 [ ] 之间、用逗号分隔开的元素列表。和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。列表(list)作为 Python 中最常用的数据类型之一,是一个可增加、删除元素的可
List(列表) 是 Python 中使用最频繁的数据类型。
列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。
列表是写在方括号 [ ] 之间、用逗号分隔开的元素列表。
和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。
列表(list)作为 Python 中最常用的数据类型之一,是一个可增加、删除元素的可变容器。
创建List
list1 = [] # 创建空的list
list2 = [1,'这是list集合',29.5,'121212']
list3 = [2,'abc',[1,2,3]]
基本操作
求 List 内元素的个数
len(list1) # 0
len(list2) # 4
len(list3) # 3
遍历 List 列表
for _ in list3:
print(f'{_}的类型为{type(_)}')
取出元素
print(list2[1])
增加元素
list3.append([2,4,6])
print(list3)
append 默认增加到 列表尾部。
在指定位置插入元素
list2.insert(2,[2,2,2,2])
print(list2);
在 list2 列表的索引为 2 的地方,插入一个另一个列表元素。
移除列表尾部元素
temp = list2.pop()
print(temp)
pop 方法返回的是 移除的那个元素本身。
移除指定元素
list2.remove('121212')
print(list2)
pop 只能移除列表尾部元素,要想移除其他元素,可以使用remove 方法。
深、浅拷贝
浅拷贝
首先定义有个列表,拿出其中的列表元素。
list1 = ['001','2019-11-11',['薇恩','乌兹']]
list2 = list1[2]
然后对 list2 进行修改,打印列表1 和列表2的值。
list2[1] = 'UZI'
print(list1)
print(list2)
发现 list1 中的元素也对应改变了,因为 list2 引用 list1 的第三个元素,所以 list1 也会相应改变。
如果不想改变 list1 的第三个元素,就需要复制出 list1 的这个元素:
list1 = ['001','2019-11-11',['薇恩','乌兹']]
list2_deep = list1[2].copy()
list2_deep[1] = 'UZI'
print(list1)
print(list2_deep)
此时,再对 list2_deep 操作,便不会影响 list1[2] 的值。
注意:copy 函数,仅仅实现对内嵌对象的一层拷贝,属于 shallow copy(浅拷贝)
深拷贝
先看下面的代码
list = [1,2,[3,4,5]]
new_list = list.copy()
new_list[0] = 10
new_list[2][1] = 40
修改后,分别测试两个值的相等性。
print(list[0] == new_list[0]) // False
print(list[2][1] == new_list[2][1]) // True
第一个输出 False,证明实现了拷贝。
第二个输出 True,证明是浅拷贝,不是深拷贝。copy 只完成了一层 copy。
要想实现深拷贝,需要使用 copy 模块的 deepcopy 函数:
from copy import deepcopy
list = [1,2,[3,4,5]]
new_list = deepcopy(list)
new_list[0] = 10
new_list[2][1] = 40
print(list[0] == new_list[0]) // False
print(list[2][1] == new_list[2][1]) // False
打印结果,都为 False,证明内嵌的 List 列表也完成了复制。
切片
Java 和 C++ 中,访问数组中的元素只能一次一个,但 Python 增加切片功能为访问列表带来极大便利。利用内置函数 range(start,stop,step) 生成序列数据,并转为 List 类型。
a = list(range(1,20,3))
print(a)
# 输出结果:
[1, 4, 7, 10, 13, 16, 19]
a[:3] 获取列表 a 的前三个元素,返回: [1, 4, 7]
a[-1] 获取 a 的最后一个元素,返回: 19
a[:-1] 获取除最后一个元素的切片,返回: [1, 4, 7, 10, 13, 16]
a[1:5] 生成索引为 [1,5)(不包括索引 5),返回: [4, 7, 10, 13]
a[1:5:2] 生成索引 [1,5) ,步长为 2,返回: [4, 10]
a[::3] 生成索引 [0,len(a)) 步长为 3,返回: [1, 10, 19]
a[::-3] 生成逆向索引 [len(a),0) 步长为 3,返回: [19, 10, 1]
逆向:从列表最后一个元素访问到第一个元素的方向。
逆向列表:
首先定义函数
def reverse(list):
return list[::-1]
调用函数
ra = reverse(a)
print(ra)
# 输出结果
[19, 16, 13, 10, 7, 4, 1]
更多推荐
所有评论(0)