python 数据结构 元组 tuple

简介: tuple使用场景Tuple 比 list 操作速度快。如果您定义了一个值的常量集,并且唯一要用它做的是不断地遍历它,请使用 tuple 代替 list。

tuple使用场景

  • Tuple 比 list 操作速度快。如果您定义了一个值的常量集,并且唯一要用它做的是不断地遍历它,请使用 tuple 代替 list。
  • 如果对不需要修改的数据进行 “写保护”,可以使代码更安全。使用 tuple 而不是 list 如同拥有一个隐含的 assert 语句,说明这一数据是常量。如果必须要改变这些值,则需要执行 tuple 到 list 的转换 (需要使用一个特殊的函数)。
  • Tuples 可以在 dictionary 中被用做 key,但是 list 不行。实际上,事情要比这更复杂。Dictionary key 必须是不可变的。Tuple 本身是不可改变的,但是如果您有一个 list 的 tuple,那就认为是可变的了,用做 dictionary key 就是不安全的。只有字符串、整数或其它对 dictionary 安全的 tuple 才可以用作 dictionary key。
  • Tuples 可以用在字符串格式化中,后面会用到。

字符串

>>>#变量引用str
>>> s = "abc"
>>> s
'abc'

元组

>>>#如果这样写,就会是...
>>> t = 123,'abc',["come","here"]
>>> t
(123, 'abc', ['come', 'here'])

上面例子中看到的变量t,并没有报错,也没有“最后一个有效”,而是将对象做为一个新的数据类型:tuple(元组),赋值给了变量t。
元组是用圆括号括起来的,其中的元素之间用逗号隔开。(都是英文半角)
tuple是一种序列类型的数据,这点上跟list/str类似。它的特点就是其中的元素不能更改,这点上跟list不同,倒是跟str类似;它的元素又可以是任何类型的数据,这点上跟list相同,但不同于str。

>>> t = 1,"23",[123,"abc"],("python","learn")   #元素多样性,近list
>>> t
(1, '23', [123, 'abc'], ('python', 'learn'))

>>> t[0] = 8                                   #不能原地修改,近str
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

>>> t.append("no")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'append'
    >>>

从上面的简单比较似乎可以认为,tuple就是一个融合了部分list和部分str属性的杂交产物。此言有理。

  • 像list那样访问元素和切片
    先复习list中的一点知识:
>>> one_list = ["python","hiekay","github","io"]
>>> one_list[2]
'github'
>>> one_list[1:]
['hiekay', 'github', 'io']
>>> for word in one_list:
...     print word
...
python
hiekay
github
io
>>> len(one_list)
4
  • 上面的list如果换成tuple是否可行
>>> t
(1, '23', [123, 'abc'], ('python', 'learn'))
>>> t[2]
[123, 'abc']
>>> t[1:]
('23', [123, 'abc'], ('python', 'learn'))
>>> for every in t:
...     print every
...
1
23
[123, 'abc']
('python', 'learn')
>>> len(t)
4

>>> t[2][0]     #还能这样呀,哦对了,list中也能这样
123
>>> t[3][1]
'learn'
  • 所有在list中可以修改list的方法,在tuple中,都失效。
  • 分别用list()和tuple()能够实现两者的转化:
>>> t
(1, '23', [123, 'abc'], ('python', 'learn'))
>>> tls = list(t)                           #tuple-->list
>>> tls
[1, '23', [123, 'abc'], ('python', 'learn')]

>>> t_tuple = tuple(tls)                    #list-->tuple
>>> t_tuple
(1, '23', [123, 'abc'], ('python', 'learn'))
``` XX
目录
相关文章
|
2月前
|
算法 开发者 计算机视觉
燃爆全场!Python并查集:数据结构界的网红,让你的代码炫酷无比!
在编程的世界里,总有一些数据结构以其独特的魅力和高效的性能脱颖而出,成为众多开发者追捧的“网红”。今天,我们要介绍的这位明星,就是Python中的并查集(Union-Find)——它不仅在解决特定问题上大放异彩,更以其优雅的设计和强大的功能,让你的代码炫酷无比,燃爆全场!
38 0
|
2月前
|
Python
Python 中常见的数据结构(二)
Python 中常见的数据结构(二)
|
2月前
|
存储 索引 Python
Python 中常见的数据结构(一)
Python 中常见的数据结构(一)
|
2月前
|
开发者 Python
Python 常用的数据结构
Python 常用的数据结构
|
3月前
|
存储 索引 Python
Python常用数据结构——集合
Python常用数据结构——集合
|
3月前
|
存储 数据安全/隐私保护 Python
Python常用数据结构——字典的应用
Python常用数据结构——字典的应用
|
3月前
|
Python
逆天改命!掌握Python并查集,数据结构难题从此不再是你的痛!
在编程旅程中,遇到棘手的数据结构难题是否让你苦恼?别担心,Python并查集(Union-Find)是你的得力助手。这是一种高效处理不相交集合合并及查询的数据结构,广泛应用于网络连通性、社交网络圈子划分等场景。通过维护每个集合的根节点,它实现了快速合并与查询。本文将介绍并查集的基本概念、应用场景以及如何在Python中轻松实现并查集,帮助你轻松应对各种数据结构挑战。
36 3
|
3月前
|
Python
Python中的tuple:探索其强大功能与实用技巧
Python中的tuple:探索其强大功能与实用技巧
31 1
|
2月前
|
存储 索引 Python
python数据结构之列表详解
列表是Python中极为灵活和强大的数据结构,适合于存储和操作有序数据集合。掌握其基本操作和高级特性对于编写高效、清晰的Python代码至关重要。通过本回答,希望能帮助你全面理解Python列表的使用方法,从而在实际编程中更加游刃有余。
26 0
|
2月前
|
存储 Python
Python 中常见的数据结构(三)
Python 中常见的数据结构(三)