15.1 创建元组的副本
好啦,我们已经知道,元组 (tuples)
是不可变的元素序列。
因为它们不可变,创建元组的副本看起来好像没什么重要的,
因为和列表不同,元组创建后不能更改。
不过有时候可能需要创建一个元组副本, 特别是当需要在不改变原始数据的情况下使用其单独版本时。以下是主要的方法:
直接赋值
创建元组副本最简单的方法是使用直接赋值。这样会 创建一个新的元组对象,但因为元组是不可变的,两个对象会引用相同的数据。
original_tuple = (1, 2, 3, 4, 5)
copied_tuple = original_tuple
print(copied_tuple)
在这种情况下,copied_tuple
会引用与
original_tuple 相同的对象。
使用函数 tuple()
创建元组副本的另一种方法是使用内置函数
tuple()
。这个函数创建一个新元组并复制
原始元组的元素。
original_tuple = (1, 2, 3, 4, 5)
copied_tuple = tuple(original_tuple)
print(copied_tuple)
这种方法在你想确保创建新对象时特别有用, 即使原始对象可能是其他可迭代对象。
通过列表转换
有时候可能需要创建元组的可变副本作为列表, 以进行更改,然后再将其转换为元组。
original_tuple = (1, 2, 3, 4, 5)
temp_list = list(original_tuple)
temp_list.append(6)
copied_tuple = tuple(temp_list)
print(copied_tuple)
在这个示例中,我们先将元组转换为列表,添加 一个新元素,然后再将列表转换回元组。
15.2 合并元组
与列表不同,元组在创建后无法修改,但你可以通过 合并现有的元组来创建新元组。合并元组是一个常见的操作, 在多种编程场景中都可能有用。
合并元组的主要方法
连接
合并两个或多个元组最简单的方法是使用
操作符 +
。这种方法创建一个新元组,
即原始元组连接的结果。
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
combined_tuple = tuple1 + tuple2
print(combined_tuple)
在这个例子中,combined_tuple
将包含元素 (1, 2, 3, 4, 5, 6)。
乘以整数
你还可以使用操作符 *
将元组乘以整数。
这会重复元组指定的次数并创建一个新元组。
tuple1 = (1, 2, 3)
multiplied_tuple = tuple1 * 3
print(multiplied_tuple)
在这里,multiplied_tuple
将包含元素 (1, 2, 3, 1, 2, 3, 1, 2, 3)。
函数 itertools.chain
对于合并大量元组,可以使用
itertools
模块的 chain
函数。这很方便,
当合并的元组数量未知时。
from itertools import chain
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
tuple3 = (7, 8, 9)
combined_tuple = tuple(chain(tuple1, tuple2, tuple3))
print(combined_tuple)
结果将是 (1, 2, 3, 4, 5, 6, 7, 8, 9)。
15.3 嵌套元组
包含其他元组的元组被称为
嵌套元组 (nested tuples)
。嵌套元组
提供了一种方便的数据组织和结构化方式,尤其是当需要表示多维数据或复杂结构时。
你可以通过创建嵌套结构来合并元组。这在 将数据组织为多维结构时很有用。在 Python 中创建嵌套元组 和创建普通元组一样简单。你只需在一个元组中包含另一个元组。
nested_tuple = ((1, 2, 3), (4, 5, 6), (7, 8, 9))
在这个示例中,nested_tuple
包含三个元组,每个元组由三个元素组成。
从普通元组创建嵌套元组的示例:
在这个示例中,nested_tuple
包含三个元组,每个元组由三个元素组成。
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
nested_tuple = (tuple1, tuple2)
print(nested_tuple)
这里 nested_tuple
将包含 ((1, 2, 3), (4, 5, 6))。
访问嵌套元组的元素
访问嵌套元组的元素是通过使用多重索引实现的。 首先为外部元组指定索引,然后为内部元组指定。
nested_tuple = ((1, 2, 3), (4, 5, 6), (7, 8, 9))
# 访问第二个嵌套元组中的元素 5
element = nested_tuple[1][1]
print(element) # 输出: 5
多维数组
嵌套元组经常用于表示二维或多维数组。例如, 数据表可以表示为元组的元组,其中每个表行是一个单独的元组。
数据结构化
嵌套元组适合数据结构化,例如 地理坐标(纬度和经度)为多个地点:
locations = (("New York", (40.7128, -74.0060)),
("Los Angeles", (34.0522, -118.2437)),
("Chicago", (41.8781, -87.6298)))
GO TO FULL VERSION