Python札记4_元组tuple

浏览: 772

元组tuple是用圆括号()括起来,其中的元素之间用逗号隔开。元组中的元素是任意类型的。元组可以看做融合了列表或者字符串属性的一种序列。

python札记4_tuple

  • 元组是序列,和列表或者字符串比较类似,索引和切片等方法仍然适用
  • 元组中的元素不能更改
  • 如果元组中只有一个元素,最后需要有逗号
  • 元组中的元素是任意类型,和列表类似,不同于字符串
  • 所有在列表中可以修改列表的方法,在元组中全部失效

元组操作

tup = ()        # 创建空元组
print(tup)

tup1 = ('python', ) # 创建单个元组,必须在最后带上逗号
print(tup1)

tup2 = (1, 2, (3, ), ["python", "java", "php"]) # 创建多重元组
print(tup2[0]) # 返回元组中的第一个元素
print(tup2[:1]) # 这里1表示索引编号,从编号0到1,只有第一个元素,返回值的形式仍为元组
print(tup2[1::2]) # 从编号1开始,到结束,步长为2
print(tup2[::-1]) # 反转元组
print(tup2[3][1]) # 元组中第一层标号为3,第二层中标号为1的元素

print(len(tup2)) # 元素的长度
print(tup2.index(2)) # 返回元组中元素2的索引标号
del tup2 # 元组中单个元素不能删除,只能删除整个元组

# 结果如下:
()
('python',)
1
(1,)
(2, ['python', 'java', 'php'])
(['python', 'java', 'php'], (3,), 2, 1)
java
4
1

元组和列表转化

元组和列表之间是互通的,通过list()tuple()能够实现列表和元组之间的转化。通过dir(tuple)能够查看元组对象的方法。

>>> dir(tuple)
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']
  • _iter_:说明元组是可迭代的
  • count(),index():能够应用于序列
# 定义一个元组t
t = (1, 123, ["python", "java"], (123, 'xiaoming'))
list_t = list(t) # tuple--->list
print(list_t)
tuple_t = tuple(list_t) # list---->tuple
print(tuple_t)

注意:
元组本身不能被修改,但是可以将元组先转化成列表,通过列表修改之后再转化成元组。tuple--->list--->tuple

# 定义一个元组t
t = (1, 123, ["python", "java"], (123, 'xiaoming'))
list_t = list(t) # 元组转换成列表
list_t[0] = 2 # 通过列表修改元素
tuple_t = tuple(list_t) # 再转换成元组
print(tuple_t)

(2, 123, ['python', 'java'], (123, 'xiaoming'))

元组用途

  • 元组表列表操作速度快;在进行遍历操作的时候,请用元组代替列表
  • 如果对不需要修改的数据进行“写保护”,即改数据是常量,也要使用元组;如果需要改变这些值,转换为列表进行修改
  • 元组在字典中可以当做key来使用,但是列表不可以
推荐 0
本文由 皮大大 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册