Python数据容器(1)--列表与元组

数据容器

在Python中,数据容器是指能够存储多个数据项(可以是不同类型的数据)的数据结构。Python提供了多种内置的数据容器类型,每种类型都有其特定的用途和特性。Python中最常用的数据容器有:List列表、Tuple元组、Dictionary字典、Set集合。

本篇我们来介绍其中的List列表和Tuple元组。

List列表

在Python中,列表(List)是一种非常基础且强大的数据结构,用于存储一系列有序的项目(也称为元素)。列表可以包含不同类型的元素,比如整数、浮点数、字符串、甚至是其他列表(嵌套列表)。

列表是有序的、可变的。有序意味着list列表可以索引、切片;而可变意味着list列表可以增、删、改、查操作,但是不稳定、不够安全。

列表形式

列表是放在方括号[]中来创建的,其中可以包含不同类型的元素,列表中的元素用","隔开,比如:

list = [1,2,5.2,3.9,'a','cs',True,False,[1,2]]

可以在其中再存放一个列表

有序

索引

之前我们了解过字符串的索引index方法使用,我们来尝试用同样的方法对列表索引试试:

list = [1,2,5.2,3.9,'a','cs',True,False,[1,2]]

print(list.index(3.9))  #索引列表中元素3.9的位置
print(list.index('cs'))

---------------------------
输出结果:
3
5

 由此可知,列表的索引方法和字符串的相同,且列表的位置编号也是从左到右由0开始。

切片

同样的,我们也尝试使用字符串切片方法试试列表的切片:

list = [1,2,5.2,3.9,'a','cs',True,False,[1,2]]

print(list[2])       #切出第二个位置的元素
print(list[5])
print(list[::-1])    #将列表反方向输出

----------------------------
输出结果:
5.2
cs
[[1, 2], False, True, 'cs', 'a', 3.9, 5.2, 2, 1]

切片也同字符串方法一样。

但是我们学习了列表,对于列表内的元素还是列表的列表怎么切片呢?比如:

b = [[1, 2],
     [3, 4]]     #两个列表以矩阵方式存放,b可以表示二维矩阵

对b进行切片:

b = [[1, 2],    #[1, 2]的位置为0,[3, 4]位置为1
     [3, 4]] 

print(b[1][0])    #表示切片:位置为1的元素中存放在第0个位置的元素

如果一个列表存放在另一个列表中,那么该列表的索引位置以整个列表为一个单位。

注意

另外,注意索引越界问题,如果索引的位置超过了列表位置的长度,就会产生越界。我们可以通过:


list = [1,2,5.2,3.9,'a','cs',True,False,[1,2]]
print(len(list))

---------------------------
输出结果:
9

来查看列表的长度,列表的位置范围为0~len(list) - 1. 

可变

列表可变也就意味着我们可以对它进行增加、删除、查找、更改操作。

增加

字符串有字符串的方法,列表同样有列表的方法:

append追加
list_1 = [1,2,5.2,3.9,'a','cs',True,[1,2]]

#增加
list_1.append(False)    #append()括号内输入添加的元素
print(list_1)
list_1.append([3,4])
print(list_1)

----------------
输出结果:
[1, 2, 5.2, 3.9, 'a', 'cs', True, [1, 2], False]
[1, 2, 5.2, 3.9, 'a', 'cs', True, [1, 2], False, [3, 4]]

将元素追加在列表的末尾。

extend()追加

把可迭代(iterable)的对象一个一个追加进列表。那么,可迭代是什么?哪些是可迭代的呢?

可迭代对象(Iterable):是指那些可以被迭代遍历的对象,即可以通过一个循环(如for循环)一次返回其成员的对象。 包括但不限于:列表、元组、字符串、字典、集合、布尔类型等等。

那么extend怎么使用呐?输出返回方式和append相同吗?

list_1 = [1,2,5.2,3.9,'a','cs',True,[1,2]]

list_1.extend([5,6])
print(list_1)

--------------------------------
输出结果:
[1, 2, 5.2, 3.9, 'a', 'cs', True, [1, 2], 5, 6]

我们发现我们原本要追加进去的元素[5,6]被分开成一个一个追加进列表。这就是extend不一样的地方,一个一个追加。

删除

列表如何将不需要的元素去除呢?

pop()弹出
list_1 = [1,2,5.2,3.9,'a','cs',True,[1,2]]
# 删除操作
# pop 弹出操作
list_1.pop()    #括号内空字符弹出最后一个元素
print(list_1)
list_1.pop(4)   #括号内输入的是目标元素的索引位置
print(list_1)

输出结果:

[1, 2, 5.2, 3.9, 'a', 'cs', True]
[1, 2, 5.2, 3.9, 'cs', True]

pop()括号内空字符弹出最后一个元素,输入位置则弹出该位置的元素’

remove()移除

remove()移除的是值,即括号内输入的是列表内的元素,比如:

list_1 = [1,2,5.2,3.9,'a','cs',True,[1,2]]
# remove 移除的是值
list_1.remove(5.2)
print(list_1)
list_1.remove(1)
print(list_1)
-------------------------
输出结果:
[1, 2, 3.9, 'a', 'cs', True, [1, 2]]
[2, 3.9, 'a', 'cs', True, [1, 2]]

值得一提的是:基于上方代码的基础上,假设我们再次移除一个"1",会怎么样呢?

list_1.remove(1)
print(list_1)

输出结果:

[2, 3.9, 'a', 'cs', [1, 2]]

我们发现:元素True被移除了,之前提过,Python中True = 1。故,True被当作1移除了。

查找

index索引查找

有序索引中已经介绍咯,该方法不再细说啦。

count()计数

count(x)返回列表中元素x出现的次数。

list_1 = [1,2,5.2,3.9,'a','cs',True,[1,2]]
print(list_1.count(1))

---------------------
输出结果:
2        #True也算哦

更改

reverse()反转
list_1 = [1,2,5.2,3.9,'a','cs',True,[1,2]]
#改
#reverse 列表的反转

list_1.reverse()	#将列表数据逆着逐一排序
print(list_1)

------------------------------
输出结果:
[[1, 2], True, 'cs', 'a', 3.9, 5.2, 2, 1]

sort()排序

sort()括号内输入reverse=bool(布尔值)

介绍:reverse=True这个参数的含义是指定排序的顺序应该是降序的(即从大到小)。
# 相反,如果reverse参数被省略或者设置为False(默认值),则排序顺序是升序的(即从小到大)。

list_1 = [1,2,5.2,3.9,'a','cs',True,[1,2]]
# sort 排序
c = [5, 6, 7, 8, 3, 4]
c.sort(reverse=True)
#reverse=True这个参数的含义是指定排序的顺序应该是降序的(即从大到小)。
# 相反,如果reverse参数被省略或者设置为False(默认值),则排序顺序是升序的(即从小到大)。
print(c)

-------------------
输出结果:
[8, 7, 6, 5, 4, 3]

Tuple元组

 Tuple(元组)是Python中一种内置的数据结构,用于存储一系列不可变的项目(元素)。与列表(List)不同,元组一旦创建就不能被修改(即它是不可变的)。这意味着你不能增加、删除或更改元组中的元素。

元组有序但不可变,意味着稳定、安全。(可查找)

元组形式

元组是放在圆括号()中来创建de,其中可以包含不同类型的元素,元组中的元素用","隔开,比如:

tuple_a = (1, 2, 3, 4,'e123', "daqwe", [1, 2])

一元组

元组中的元素只有一个时,我们该怎么表示呢?直接在小括号内存放一个?我们来试试看:

tuple_b = ("a")
print(tuple_b,type(tuple_b))

输出tuple_b的类型:

a <class 'str'>

我们发现输出类型是字符串,并不是元组 ,正确的表示方法是这样的:

tuple_1 = ("a",)    #正确方法,加,意味定义元组
print(tuple_1, type(tuple_1))

------------------
输出结果:
('a',) <class 'tuple'>

 一元组的表示要在元素后加个","。

有序

查找

有序代表我们可以通过index索引和count计数

tuple_a = (1, 2, 3, 4,  'e123', "daqwe", [1, 2])

print(tuple_a.index(1))  #索引元组中"1"所在的位置
print(tuple_a.count(3))  #计数元组中有多少个"3"

------------
输出结果:
0
1

不可变

元组不可变不能进行增加、删除或更改元组中的元素的操作。我们不妨来试试,就往元组中增加一个元素:尝试通过切片赋值:

tuple_a = (1, 2, 3, 4, 5, 6, 'e123', "daqwe", [1, 2])

tuple_a[4] = 10     #通过切片赋值
print(tuple_a)

输出结果:

    tuple_a[4] = 10
TypeError: 'tuple' object does not support item assignment

>>>当我们尝试修改元组(tuple)中的元素时,出现报错
意味着元组(tuple)是一种不可变的数据结构,一旦创建,其内部元素就不能被更改。

所以,元组不可进行增加、删除和更改元组中元素的操作。

 

总结

列表:放在方括号[]中来创建,有序且可变,可以索引、切片,可进行增加、删除、查找和更改元组中元素的操作。

元组:放在圆括号()中来创建,有序但不可变,可以进行索引和查找操作,不可进行增加、删除和更改元组中元素的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值