python-元组
元组tuple(不可变)
初始化
#创建一个空元组
a=tuple()
print(a)
()
#tuple(iterable)
print(tuple(range(1,23,4)))
#输出
(1, 5, 9, 13, 17, 21)
#*号
print((1,2)*3)
#输出
(1, 2, 1, 2, 1, 2)
元组访问
#正负索引,越界抛异常
a=(12,33,3,2,44,4)
print(a[3])
a[3]=5
print(a)
#输出
2
TypeError: 'tuple' object does not support item assignment
以上可以说明元组不可变,与字符串一项,要改变一个变量,必须再开辟一块内存空间
元组查询
#index(value,[start,[stop]])
a=(12,33,3,2,44,4)
print(a.index(4,1,5))
#输出
ValueError: tuple.index(x): x not in tuple
a=(12,33,3,2,44,4)
print(a.index(4,1,6))
#输出
5
说明以上的[start,stop]取值也是[,),取不到就会报错
#count(value)
a=(12,33,3,2,44,4,2,3,23,4,5,2)
print(a.count(4))
#输出
2
count和index的时间复杂度都是O(n),len()取出长度
由于元组是只读的,所以增删改都没有
命名元组namedtuple
#namedtuple(typename,field_names,verbose=False,rename=False)
#typename是命名元组,field_names可以是空格或分割的字段,也可以是列表,后两者默认即可
from collections import namedtuple
Student = namedtuple('Student','name age')
tom=Student('tom',20)
jerry=Student('jeery',18)
print(tom.name,tom.age)
#输出
tom 20
from collections import namedtuple
P = namedtuple("P",'x y')
p1=P(10,20)
print(p1)
#输出
P(x=10, y=20)
如果所需要的类不需要那么复杂,可以使用namedtuple当简单类使用