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当简单类使用

posted @ 2018-08-07 22:21  一直飞的无脚鸟  阅读(112)  评论(0编辑  收藏  举报