Python数据容器(list列表、tuple元组)
列表(List)是一种非常常用的数据结构,用于存储一系列有序的元素。这些元素可以是不同类型的,比如整数、浮点数、字符串、甚至是另一个列表(即列表的嵌套)。列表是可变的,意味着你可以在创建列表后添加、删除或修改其中的元素。你可以使用方括号[]来创建一个列表,元素之间用逗号分隔。
目录
list列表
列表(List)是一种非常常用的数据结构,用于存储一系列有序的元素。这些元素可以是不同类型的,比如整数、浮点数、字符串、甚至是另一个列表(即列表的嵌套)。列表是可变的,意味着你可以在创建列表后添加、删除或修改其中的元素。
创建列表
你可以使用方括号[]
来创建一个列表,元素之间用逗号,
分隔。
# 创建一个空列表
my_list = []
# 创建一个包含不同类型元素的列表
my_list = [1, 2.5, 'Hello', [1, 2, 3]]
用len()函数可以获得list元素的个数:
print(len(my_list))
# 结果为:4
访问列表元素
你可以通过索引来访问列表中的元素。索引从0开始。
# 访问第一个元素
print(my_list[0]) # 输出: 1
# 访问最后一个元素(注意:Python中负索引表示从后往前数)
print(my_list[-1]) # 输出: [1, 2, 3]
当索引超出了范围时,Python会报一个IndexError错误,所以,要确保索引不要越界,记得最后一个元素的索引是len(list2) - 1
print(my_list[5])
'''
会报错,超出了索引范围
IndexError: list index out of range
'''
如果要取最后一个元素,除了计算索引位置外,还可以用-1做索引,直接获取最后一个元素,同理-2可获取倒数第二个元素。
列表的操作
list列表可以进行一系列序列操作
如索引、 切片、增加、删除、修改、查询元素等
list列表自带了很多方法可以进行调用
修改列表
你可以通过索引来修改列表中的元素。
# 修改第一个元素
my_list[0] = 'Python'
print(my_list) # 输出: ['Python', 2.5, 'Hello', [1, 2, 3]]
添加元素
- 使用
append()
方法可以在列表末尾添加一个元素。 - 使用
insert(index, element)
方法可以在指定位置插入一个元素。
# 在列表末尾添加元素
my_list.append(4)
print(my_list) # 输出: ['Python', 2.5, 'Hello', [1, 2, 3], 4]
# 在指定位置插入元素
my_list.insert(1, 'World')
print(my_list) # 输出: ['Python', 'World', 2.5, 'Hello', [1, 2, 3], 4]
# extend 把可迭代的东西一个一个的追加进去
my_list.extend([5,6])
print(my_list) # 输出;['Python', 'World', 2.5, 'Hello', [1, 2, 3], 4, 5, 6]
删除元素
- 使用
remove(element)
方法可以删除列表中第一个匹配的元素。 - 使用
pop(index)
方法可以删除指定索引的元素,并返回该元素的值。如果不指定索引,默认删除并返回最后一个元素。 - 使用
del
语句也可以删除元素。
# 删除元素
my_list.remove('World')
print(my_list) # 输出: ['Python', 2.5, 'Hello', [1, 2, 3], 4]
# 删除并返回最后一个元素
last_element = my_list.pop()
print(last_element) # 输出: 4
print(my_list) # 输出: ['Python', 2.5, 'Hello', [1, 2, 3]]
# 使用del语句删除指定索引的元素
del my_list[1]
print(my_list) # 输出: ['Python', 'Hello', [1, 2, 3]]
列表生成式
列表生成式是Python中创建列表的一种简洁方式,可以从一个已存在的列表创建新列表,或者根据特定条件过滤列表中的元素。
# 创建新列表
squares = [x**2 for x in range(10)]
print(squares) # 输出: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
# 过滤列表
even_squares = [x**2 for x in range(10) if x % 2 == 0]
print(even_squares) # 输出: [0, 4, 16, 36, 64]
另外一些常见的方法
使用index()方法可以指定元素,查找元素所在的位置
a = [1, 2, 3, 4, 5.5, 6.8, 7, "a", "b", "c", True]
print(a.index(3) # 输出:2
使用count()方法可以查找指定值出现的次数
a = [1, 2, 3, 4, 5.5, 6.8, 7, "a", "b", "c", True]
print(a.count(2)) # 输出:1
sort()方法可以对list中的元素默认按照从小到大的顺序进行排序
c = [5, 6, 7, 8, 3, 4]
c.sort()
print(c) # 输出:[3, 4, 5, 6, 7, 8]
reverse()方法可以将list中的元素进行反转
c = [5, 6, 7, 8, 3, 4]
c.reverse()
print(c) # 输出:[8, 7, 6, 5, 4, 3]
clear()方法可以清空list
c = [5, 6, 7, 8, 3, 4]
c.clear()
print(c) # 输出:[]
通过索引index不仅可以获取元素,还可以对元素进行修改
classmates = ['James', 'Kobe', 'Polo']
classmates[1] = 'Kobe Bryant'
print(classmates) # 输出:['James', 'Kobe Bryant', 'Polo']
切片
通过索引index还能以更灵活的方式进行元素的提取,即切片操作
完整的切片操作需要提供三个参数:
起始位置:默认等于第一个位置
结束位置:默认等于最后一个位置
步长:默认等于1
a = [1, 2, 3, 4, 5.5, 6.8, 7, "a", "b", "c", True]
print(a[2:4]) # 输出:[3, 4]
print(a[2:8:2]) # 输出:[3, 5.5, 7]
print(a[::-1]) # 输出:[True, 'c', 'b', 'a', 7, 6.8, 5.5, 4, 3, 2, 1]
总结
切片操作需要提供起始索引位置和最后索引位置,然后用冒号 : 将两者分开
切片操作返回一系列从起始索引位置开始到最后索引位置结束的数据元素
注意:结果包含起始位置的值,但不包含结束位置的值
起始位置、结束位置、步长都可以省略,如省略则等于默认值
如果想要将列表的顺序颠倒,则可以使用::-1
切片操作同样适用于:字符串、元组中,以及numpy、pandas中的数据结构
tuple元组
另一种有序列表叫元组:tuple
和list非常类似,但是tuple一旦初始化就不能修改
比如定义一个保存了三个名字的tuple元组:
classmates = ('James', 'Kobe', 'Polo')
注意:tuple元组的定义使用一对括号
tuple元组自带的方法相对来说就很少了
由于元组是不可变的,因此元组对象没有append()、insert()和del这样的方法。
实际上,tuple的使用可以使得代码更安全,防止错误赋值导致重要对象的改变。
元组一些操作如下:
tuple_a = (1, 2, 3, 4, 5, 6, 'e123', "daqwe", [1, 2])
print(tuple_a[3]) # 输出第4个数:4
# 输出1和5这两个数据的索引位置
print(tuple_a.index(1)) # 输出;0
print(tuple_a.index(5)) # 输出:4
# 一元组
tuple_1 = ("a",) # 有逗号,才叫元组,没有的话输出的数据类型为字符串
print(tuple_1, type(tuple_1)) # 输出:('a',) <class 'tuple'>
num = [1,2,3,4,5]
num[-1] = 8 # 在末尾加一个8
print(num) # 输出:[1, 2, 3, 4, 8]
更多推荐
所有评论(0)