Python 数据科学指南 1.4使用元组

元组:是一种顺序型、不可变的容器对象,元组中的元素由逗号分隔开,可以对不同类别构成的对象进行排序,不允许插入操作,支持以下操作。

  • in和not in。
  • 比较、串联、切片和索引。
  • min()和max()。
#1.创建一个元组,严格来讲括号并不是必须的,不过它提高了代码的可读性。
a_tuple = (1,2,'a')
b_tuple = 1,2,'c'

#2.利用索引访问元组的元素,若下标为负,则从相反的方向访问元组的元素。
print (b_tuple[0])
print (b_tuple[-1])

#3.元组的元素值是无法修改的,如下的语句将返回一个错误 'tuple' object does not support item 
assignment.
#开发机器学习程序时,特别是从原始数据中生成特征值的时候,请创建特征值元组,这样数值就不会被下游的代码改变。
try:
    b_tuple[0] = 20
except:
    print ("Cannot change value of tuple by index")

#4.虽然元组是不可变的,但是元组的元素可以是一个可变的对象。
#在如下的代码中,元组的元素是一个列表,列表是可变的。
#该特性的好处1.可以使得多个模块的输出元组,连接成一个完整的特征向量。2.元组中各个字符串可以对应作为字典的键。
c_tuple = (1,2,[10,20,30])
c_tuple[2][0] = 100
print (c_tuple)

#5.元组一旦被创建,无法像列表那样进行扩展
#不过,两个元组可以串联在一起
print (a_tuple+b_tuple)

#6.对元组进行切片,一般需要3个冒号分隔的数字参数,第一个是切片开始位置,第二个是切片结束位置,第三个是步长。切片操作是右侧结束!
a=(1,2,3,4,5,6,7,8,9,10)
#从1到最后,包含1
print (a[1:])
#从1到3,不包含3
print (a[1:3])
#从1到6,step=2,不包含6
print (a[1:6:2])
#从第0个一直到最后,不包含最后一个
print (a[:-1])
#倒序输出元组a的所有值
print (a[::-1])

#7.对元组求min和max值
print (min(a),max(a))

#8.包含于与非包含于
if 1 in a:
    print("Element 1 is available in tuple a")
else:
    print("Element 1 is inavliable in tuple a")

扩展:命名元组

之前我们通过索引访问元组的元素,为了提高程序的可读性,我们会给元组的每个元素取一个元素,并通过名字来访问这些元素,这就是命名元组的来由。

#namedtuple 命名元组
from collections import namedtuple

vector = namedtuple("Demension",'x y z')
vec_1 = vector (1,1,1)
vec_2 = vector (1,0,1)

manhattan_distance =abs(vec_1.x-vec_2.x)+abs(vec_1.y-vec_2.y)+abs(vec_1.z-vec_2.z)

print ("manhattan distance between vectors = %d"%(manhattan_distance))

猜你喜欢

转载自blog.csdn.net/cjx_cqupt/article/details/88184975