Python之元组

Python之元组,第1张

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

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

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

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/791916.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-05
下一篇 2022-05-05

发表评论

登录后才能评论

评论列表(0条)

保存