python之元组操作

1、元组创建

1 tup1 = ('physics', 'chemistry', 1997, 2000)
2 tup2 = (1, 2, 3, 4, 5 )
3 tup3 = "a", "b", "c", "d"
4 tup4 =() #创建空元祖
5 tup5=(50,)#元组中只包含一个元素时,需要在元素后面添加逗号
6 tup6=50,
7 list1=[34,123,1]
8 tup7=tuple(list1)

2、元祖访问

1 tup1 = ('physics', 'chemistry', 1997, 2000)
2 print(tup1[0]) #使用下标索引来访问元组中的值

3、元组操作

tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')
tup3 = tup1 + tup2 #对元组进行连接组合
del tup1 #删除元组
tup4=('Hi!',) * 4 #元组复制
cnt=len((1, 2, 3)) #计算元素个数
isin=3 in (1, 2, 3) #元素是否存在
for x in (1, 2, 3): #元组迭代 
    print x
a=max(tup1) #最大元素
b=min(tup1) #最小元素

4、元组解包

1 tup=(1,2,3)
2 a,b,c=tup

5、值交换

1 a='wer'
2 b='dfgh'
3 a,b=b,a

6、元组与列表

①元组不可修改,列表可修改

②元组占用空间小

③可以将元祖用作字典的键

④命名元组可以作为对象的替代

⑤函数参数是以元组形式传递的

7、命名元组

命名元组是元组的子类,既可以通过.name访问值,也可以通过位置下标访问。

from collections import namedtuple
Duck=namedtuple('Duck','bill tail')
duck=Duck('wide orange','long')
>>>duck
Duck(bill='wide orange',tail='long')
>>>duck.bill
wide orange
>>>duck.tail
long

也可以使用字典来构造:

parts={'bill':'wide orange','tail':'long'}
duck2=Duck(**parts)
>>>duck
Duck(bill='wide orange',tail='long')

其中**parts是个关键词变量,作用是将parts字典中的键值抽取出来作为参数提供给Duck()使用。等价于:

duck2=Duck(bill='wide orange',tail='long')

命名元组不可变,但可以替换其中某些域的值并返回一个新的命名元组:

duck3=duck2._replace(tail='magnificent',bill='asdasd')

命名元组无法通过,name添加新的域。

命名元组的好处:

  • 和不可变对象相似
  • 与使用对象相比,使用命名元组在时间和空间上效率更高
  • 可以使用.对属性进行访问,而不需要使用字典风格的方括号
  • 可以作为字典的键
原文地址:https://www.cnblogs.com/ivan-count/p/10494366.html