元祖python_Python-数据类型-元祖

数据类型-元祖

元祖 是 python 不可变数据类型之一, 元祖由一对()包裹,括号类元素用逗号分隔,元素可以是不同的数据类型,空元祖 可以直接使用一对()号定义,如果元祖只有一个元素,则在元素后面必须加上逗号 例如 ('a',)。

1. 特点

元祖是不可变数据类型

元素是有序的序列

元祖也支持索引和切片

相对于列表占用的空间更小

示例

# 多个数据元组

t1 = (10, 20, 30)

# 单个数据元组

t2 = (10,)

# 空元祖

t3 = ()

# 特殊定义

t4 = 1,2,3,4

print(type(t4))

#

如果定义的元组只有一个数据,那么这个数据后面也要添加逗号,否则为直接当成()运算符使用

t2 = (10,)

print(type(t2)) # tuple

t3 = (20)

print(type(t3)) # int

t4 = ('hello')

print(type(t4)) # str

元祖的常见操作

按下标查找数据

tuple1 = ('aa', 'bb', 'cc', 'bb')

print(tuple1[0]) # aa

index(): 查找某个数据,如果数据存在返回对应的下标,否则报错,语法和列表、字符串的index方法相同。

tuple1 = ('aa', 'bb', 'cc', 'bb')

print(tuple1.index('aa')) # 0

count(): 统计某个数据在当前元组出现的次数

tuple1 = ('aa', 'bb', 'cc', 'bb')

print(tuple1.count('bb')) # 2

len(): 统计元组中数据的个数。

tuple1 = ('aa', 'bb', 'cc', 'bb')

print(len(tuple1)) # 4

元组内的直接数据如果修改则立即报错

tuple1 = ('aa', 'bb', 'cc', 'bb')

tuple1[0] = 'aaa'

TypeError: 'tuple' object does not support item assignment

如果元组里面有列表,修改列表里面的数据则是支持的,故自觉很重要

tuple2 = (10, 20, ['aa', 'bb', 'cc'], 50, 30)

print(tuple2[2])

# 结果: ['aa', 'bb', 'cc']

tuple2[2][0] = 'aaaaa'

print(tuple2)

# 结果:(10, 20, ['aaaaa', 'bb', 'cc'], 50, 30)

3. namedtuple()

namedtuple 是 python 的内置模块 collections提供的创建命名元组子类的工厂函数,可以使用名称来访问元素的数据对象

from collections import namedtuple

BookTuple = namedtuple("Book", ['name', 'price', 'author'])

book = BookTuple('红楼梦', 23, '曹雪芹')

print(book.name, book.price, book.author)

# 结果: 红楼梦 23 曹雪芹

books = [

('百年孤独', 30, '加西亚.马尔克斯'),

('树上的男爵', 35, '伊塔洛·卡尔维诺'),

('那不勒斯四部曲', 76, '埃莱娜·费兰特')

]

BookTuple = namedtuple("Book", ['name', 'price', 'author'])

for book in books:

book = BookTuple._make(book)

print(book.name, book.price, book.author)

"""

百年孤独 30 加西亚.马尔克斯

树上的男爵 35 伊塔洛·卡尔维诺

那不勒斯四部曲 76 埃莱娜·费兰特

"""

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值