2.10 Python3 元组

元组(tuple)是Python中不可变的序列类型,与列表(list)类似但不可修改。

元组使用小括号 ( ),列表使用方括号 [ ]

元组与字符串类似,下标索引从 0 开始,可以进行截取,组合等


目录

1. 创建元组

2. 访问元组

3. 修改元组

4. 删除元组

5. 元组运算符

6. 元组索引和截取

7. 元组内置函数

8. 元组的作用


1. 创建元组

元组可以通过多种方式创建:

# 使用圆括号创建
tup1 = ('apple', 'banana', 'cherry')
tup2 = (1, 2, 3, 4, 5)

# 单个元素的元组需要在元素后加逗号
single_tup = (5,)  # 这是一个元组
not_tup = (5)      # 这不是元组,只是一个整数

# 使用tuple()构造函数创建
tup3 = tuple(['a', 'b', 'c'])  # 从列表创建
tup4 = tuple('hello')          # 从字符串创建

# 空元组
empty_tup = ()
empty_tup2 = tuple()

print(tup1)  # 输出: ('apple', 'banana', 'cherry')
print(tup3)  # 输出: ('a', 'b', 'c')

2. 访问元组

元组可以通过索引和切片来访问其中的元素:

tup = ('apple', 'banana', 'cherry', 'orange')

# 通过索引访问
print(tup[0])   # 输出: apple
print(tup[2])   # 输出: cherry

# 负索引表示从末尾开始
print(tup[-1])  # 输出: orange
print(tup[-3])  # 输出: banana

3. 修改元组

元组是不可变的,不能直接修改元素,但可以通过以下方式间接"修改":

tup = ('apple', 'banana', 'cherry')

# 直接修改会报错
# tup[1] = 'pear'  # TypeError

# 通过重新创建元组来"修改"
tup = tup[:1] + ('pear',) + tup[2:]
print(tup)  # 输出: ('apple', 'pear', 'cherry')

# 元组可以包含可变对象,如列表
tup_with_list = (1, 2, [3, 4])
tup_with_list[2][0] = 5  # 可以修改元组中的列表
print(tup_with_list)  # 输出: (1, 2, [5, 4])

4. 删除元组

虽然不能删除元组中的单个元素,但可以删除整个元组:

tup = (1, 2, 3)
del tup
# print(tup)  # NameError: name 'tup' is not defined

 

5. 元组运算符

元组支持多种运算符操作:

tup1 = (1, 2, 3)
tup2 = (4, 5, 6)

# 连接 +
print(tup1 + tup2)  # 输出: (1, 2, 3, 4, 5, 6)

# 重复 *
print(tup1 * 3)     # 输出: (1, 2, 3, 1, 2, 3, 1, 2, 3)

# 成员运算 in
print(2 in tup1)    # 输出: True
print(7 in tup1)    # 输出: False

# 比较运算符
print((1, 2) < (1, 3))  # 输出: True
print((1, 2, 3) == (1, 2, 3))  # 输出: True

6. 元组索引和截取

元组支持索引和切片操作:

tup = ('a', 'b', 'c', 'd', 'e')

# 索引
print(tup[0])   # 输出: 'a'
print(tup[-1])  # 输出: 'e'

# 切片 [start:end:step]
print(tup[1:3])    # 输出: ('b', 'c')
print(tup[:3])     # 输出: ('a', 'b', 'c')
print(tup[2:])     # 输出: ('c', 'd', 'e')
print(tup[::2])    # 输出: ('a', 'c', 'e')
print(tup[::-1])   # 输出: ('e', 'd', 'c', 'b', 'a')  # 反转元组

7. 元组内置函数

Python提供了以下内置函数用于操作元组:

tup = (5, 2, 8, 1, 9)

# len() - 获取元组长度
print(len(tup))  # 输出: 5

# max() - 获取最大值
print(max(tup))  # 输出: 9

# min() - 获取最小值
print(min(tup))  # 输出: 1

# sum() - 求和(仅限数值元组)
print(sum(tup))  # 输出: 25

# tuple() - 将可迭代对象转换为元组
print(tuple([1, 2, 3]))  # 输出: (1, 2, 3)
print(tuple("hello"))    # 输出: ('h', 'e', 'l', 'l', 'o')

# sorted() - 返回排序后的列表(不是元组)
print(sorted(tup))       # 输出: [1, 2, 5, 8, 9]

# enumerate() - 返回枚举对象
for index, value in enumerate(tup):
    print(index, value)
    
# any() - 检查是否有任何元素为True
print(any((0, False, 1)))  # 输出: True

# all() - 检查是否所有元素都为True
print(all((1, True, 'a')))  # 输出: True

8. 元组的作用

元组在Python中有多种重要用途:

  1. 不可变性:保证数据不被意外修改

    # 作为常量集合使用
    COLORS = ('RED', 'GREEN', 'BLUE')
  2. 字典键:元组可以作为字典的键,而列表不行

    location_map = {(35.6895, 139.6917): "Tokyo", 
                   (40.7128, -74.0060): "New York"}
  3. 函数参数和返回值:常用于函数返回多个值

    def get_dimensions():
        return 1920, 1080
    
    width, height = get_dimensions()
  4. 性能优化:元组比列表更轻量,访问速度更快

    # 创建元组比列表更快
    %timeit (1, 2, 3)  # 通常比 [1, 2, 3] 快
  5. 数据保护:确保数据在传递过程中不被修改

    def process_data(data):
        # 确保传入的数据不会被修改
        data_tuple = tuple(data)
        # 处理数据...
  6. 序列解包:方便地进行多重赋值

    point = (10, 20)
    x, y = point

元组因其不可变性,在需要保证数据安全和稳定性的场景中非常有用,是Python中重要的数据结构之一。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值