前言

在前面的学习中,我们已经掌握了变量、流程控制和函数,能够处理单个数据(比如一个数字、一个字符串)。但实际开发中,我们经常需要处理一组数据(比如一串名字、一组成绩、一组用户信息),这时候就需要用到 Python 中的「容器」。

容器就像一个“收纳盒”,可以把多个数据放在一起,方便我们统一管理和操作。

Python 中最常用的四大容器就是:列表(list)、元组(tuple)、字典(dict)、集合(set)

在 Python 里,列表和元组 都是用来 ‘装东西’ 的容器。

可以装:数字、字符串、布尔值、甚至列表 / 元组本身,一个容器里能装多种类型

举个现实生活中的例子:

  • 列表 List = 书包

    想装啥装啥,想拿出来拿出来,想加就加,想删就删,可随意修改。

  • 元组 Tuple = 密封好的快递盒

    一旦封好,里面的东西不能改、不能删、不能加,只能看。

列表

列表是 Python 中最常用的容器,它就像一个可随意修改的“抽屉”,里面可以放任意类型的数据(数字、字符串、甚至其他容器),并且里面的元素是有序的,能重复存放。

创建列表

将元素放到 []中,元素之间用逗号隔开,空列表直接写 [] 即可

a = [111,222,333]

使用 list() 也可以创建列表(传递一个可迭代对象,构造列表;也可以构造空列表)

b = list("hello") # b -> ['h', 'e', 'l', 'l', 'o']

列表的核心操作

列表最常用的操作:访问、添加、修改、删除

访问元素

列表是有序的,每个元素都有一个 ‘位置编号’ ,叫做「索引」。

索引从 0 开始(比如第一个元素索引是 0,第二个是 1,以此类推)

test_list = [111, "hello", False, 3.14]
# 访问第一个元素(索引0)
print(test_list[0])
# 访问最后一个元素(索引-1/n-1)
print(test_list[-1])
# 访问第二个元素(索引1)
print(test_list[1])

这里索引是支持负数的,-1表示右侧第1个元素,-2表示右侧第2个元素,依次类推

获取索引:列表中的 index方法可以获得指定元素对应的索引值

print(test_list.index(3.14))

注意:如果指定元素不存在,直接报错。

添加元素

列表中的 append()方法,往列表末尾添加元素

insert()方法 往指定位置添加元素

test_list = [666,"grown"]
test_list.append(3.14)
print(test_list)
test_list.insert(1,"hello")
print(test_list)

列表当中可以存储任意类型的元素,这里也可以在列表中插入一个 列表/元组等

修改元素

列表可以直接通过 '‘索引赋值’ 的方式,修改指定位置的元素。

test_list = [666,True,"grown",3.33]
test_list[1] = "hello"
test_list[2] = 9.99
print(test_list)

删除元素

列表当中常见删除元素的方法:del(按照索引删除)、remove()(安装元素值删除)、pop()(删除并返回末尾元素)

test_list = [111,"hello",3.14,"python"]
# 根据索引删除
del test_list[0]
print(test_list)
# 删除指定元素
test_list.remove(3.14)
print(test_list)
# 删除并返回末尾元素
print(f"pop : {test_list.pop()}")
print(test_list)

切片操作

切片 : 截取一段列表

格式:列表[起始:结束:步长]

nums = [0,1,2,3,4,5,6]

print(nums[1:4])   # [1,2,3]
print(nums[:3])    # [0,1,2]
print(nums[::2])   # [0,2,4,6]  步长为 2

其他常用操作

除了增、删、改、查之外,还有一个其他操作,例如:查看列表长度、查看元素是否在列表中等等

my_list = [1, 2, 3, 4, 5]
# 1. 查看列表长度(元素个数)
print(len(my_list))  # 输出:5
# 2. 查看元素是否在列表中
print(3 in my_list)  # 输出:True(3在列表中)
print(6 in my_list)  # 输出:False(6不在列表中)
# 3. 列表排序(仅对数字列表有效)
my_list.sort()
print(my_list)  # 输出:[1, 2, 3, 4, 5]
# 4. 列表反转
my_list.reverse()
print(my_list)  # 输出:[5, 4, 3, 2, 1]
方法作用
len(list)获取列表长度
max(list)最大值
min(list)最小值
sum(list)求和
list.index(x)找元素 x 的下标
list.count(x)统计元素 x 出现次数
list.sort()从小到大排序
list.reverse()反转列表

元组

元组 相对于 列表,唯一的区别就是 : 元组不能修改

创建元组

  • 圆括号 () 包裹,元素之间用逗号隔开,可以创建空元组 ()
  • 使用 tuple() 创建元组
a = (1,2,3,4,5)
b = ()
c = tuple()
d = tuple(a)

注意:当元祖中只有一个元素时,必须加 ,

a1 = (10)
print(type(a1))  # <class 'int'>
a2 = (10,)
print(type(a2))  # <class 'tuple'>

常用操作

元组最重要的特点:不可修改(不可变)

一旦创建,不能增、删、改

尝试修改会直接报错:TypeError

元组的常用操作:查询、切片、遍历

t = (1,2,3,4,5)

print(t[1])    # 2
print(t[1:3])  # (2,3)
print(len(t))  # 5

除此之外,元组和列表一样,都可以存储任意类型的元素。

元组当中也可以存储列表,列表当中的值是可以修改的

t = (1, [2,3], 4)
t[1][0] = 999
print(t)  # (1, [999, 3], 4)

元组存的是 ‘列表的地址’,地址没变,只是列表内容变了。

列表与元组

最常用的通用操作(列表元组都能用)

1. 遍历

# 列表
for item in [1,2,3]:
    print(item)

# 元组
for item in (1,2,3):
    print(item)

2. 判断元素是否存在

lst = [1,2,3]
print(2 in lst)  # True

t = (1,2,3)
print(4 in t)   # False

3. 拼接和重复

# 拼接
print([1,2] + [3,4])  # [1,2,3,4]
print((1,2) + (3,4))  # (1,2,3,4)

# 重复
print([1] * 3)  # [1,1,1]
print((2,) * 3) # (2,2,2)

4. 类型互相转换

# 列表 -> 元组
t = tuple([1,2,3])

# 元组 -> 列表
lst = list((1,2,3))

列表和元组的区别

特性列表 List元组 Tuple
写法[]()
可修改可以增删改不可修改
性能相对较慢更快、占用空间小
安全性数据可能被意外修改安全,保护数据不被篡改
使用场景需要频繁变动的数据固定不变的配置、参数

函数返回多个值

Python 函数可以直接返回多个值,底层其实是返回了一个元组

def test():
    return 10,20
print(type(test()))  # <class 'tuple'>

示例 :返回多个计算结果

def calc(a, b):
    add = a + b
    sub = a - b
    mul = a * b
    return add, sub, mul

a, s, m = calc(10, 3)
print(a, s, m)   # 13 7 30
  • 元组不可变,安全稳定
  • 适合用来打包一组固定数据
  • 语法简洁,不用手动写括号

这也是 Python 里 元组最常见、最实用的场景之一

本篇文章到这里就结束了,感谢支持
我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=2oul0hvapjsws

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐