Python之元组

元组也是一种数据容器,使用小括号" ( ) "表示,其使用场景与列表相似,这意味着能使用列表的地方,基本上都能使用元组,包括列表推导式、切片等操作。元组与列表的唯一区别是元组不可变的。

一、创建元组与拼接元组

如下,通过小括号创建元组。作为数据容器,元组的元素类型可以不统一,并通过下标创建元素和进行切片。

tuple1=("hello","world","python","spark","hadoop")
print("获取指定位置的元素:",tuple1[0])

tuple2=(-10,-20,5.888,888,20000)
print("元组正向切片:",tuple2[1:])

tuple3=("hello",[1,2],-20,888,5.888)
print("元组反向切片:",tuple3[:-1])

tuple4=([1,2],[3,4],[5,6,7,8],[9,10,11,12,13,14])
print("获取列表中的元素:",tuple4[2][:-1])

执行结果如下,对元组的遍历、访问指定位置的元素等操作与列表是相似的。

获取指定位置的元素: hello
元组正向切片: (-20, 5.888, 888, 20000)
元组反向切片: ('hello', [1, 2], -20, 888)
获取列表中的元素: [5, 6, 7]

使用小括号将两个元组相加,能创建新的元组。注意,这里的相加只是加法的重载,与字符串相加类似,即将两个对象的内容连接在一起并创建一个新对象,如下

tuple1=("hello","world","python")
tuple2=([1,2],[3,4],[5,6,7,8])
tuple3=tuple1+tuple2
print("通过加法拼接的元组:")
print(tuple3)

执行结果如下

通过加法拼接的元组:
('hello', 'world', 'python', [1, 2], [3, 4], [5, 6, 7, 8])

二、修改元组

元组是不可变类型,直接修改元组的元素会导致程序报错。但是,如果保持元组的大小不变,并且要修改的元素是可变类型,那么就能正常修改了,如下

tuple1=("hello","world","python","spark","hadoop")
try:
    tuple1[0]="hello world"
except Exception as e:
    print("修改元组数据触发异常:",e)

tuple4=([1,2],[3,4],[5,6,7,8])
tuple4[1][0]=("hello","world")
print("修改元组中的列表:",tuple4)

执行结果如下

修改元组数据触发异常: 'tuple' object does not support item assignment
修改元组中的列表: ([1, 2], [('hello', 'world'), 4], [5, 6, 7, 8])

三、单元素元组

如下,对于创建单个元素的列表,直接在中括号中放置元素即可,但是对于元组,则需要在元素末尾放置一个逗号,如第8行和第14行。第6行和第14行输出的对象类型将分别是字符串和列表,而第9行和第15行输出的元素类型才是元组。

tmp_str="123"
tmp_list=[tmp_str]
print("单元素列表:",type(tmp_list))

tmp_tuple=(tmp_str)
print("单元素元组:",type(tmp_tuple))

tmp_tuple=(tmp_str,)
print("单元素元组:",type(tmp_tuple))

tmp_tuple=(tmp_list)
print("单元素元组:",type(tmp_tuple))

tmp_tuple=(tmp_list,)
print("单元素元组:",type(tmp_tuple))

执行结果如下

单元素列表: <class 'list'>
单元素元组: <class 'str'>
单元素元组: <class 'tuple'>
单元素元组: <class 'list'>
单元素元组: <class 'tuple'>

注意,在元素末尾放置一个逗号构成元组,只是对单个元素才有此要求。对于有多个元素的元组,末尾的逗号是可选的。

四、命名元组

namedtuple是collections模块内的一个对象,称为命名元组。具体用法如下,通过namedtuple可以创建一个新的对象,其第一个参数就是该对象的名称,第二个参数是一个列表,制定了该对象的字段。使用该对象创建实例,需要传入字段所对应的参数。访问实例的字段内容,可以通过索引和字段名称。

from collections import namedtuple

fruit=namedtuple("fruit",["category","price"])
fruit_obj=fruit("apple",price=10.2)
print("元组名称:",fruit.__name__)
print("fruit_obj对象结构:",fruit_obj)
print("category值为:fruit_obj[0]={},fruit_obj.category={}".format(fruit_obj[0],fruit_obj.category))
print("price值为:fruit_obj[0]={},fruit_obj.price={}".format(fruit_obj[1],fruit_obj.price))

执行结果如下,输出命名元组对象的信息

元组名称: fruit
fruit_obj对象结构: fruit(category='apple', price=10.2)
category值为:fruit_obj[0]=apple,fruit_obj.category=apple
price值为:fruit_obj[0]=10.2,fruit_obj.price=10.2

本篇文章就到这里结束了,希望能给小伙伴们一些帮助,喜欢的小伙伴们可以点赞关注支持一下!!!
(元组的内容学习的较少所以写的也就比较少了,绝对不是我水文!!!)

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

8X_I

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值