5.基本数据类型元组

       元组与列表非常相似,它用()而不是[]括起来的序列。元组比列表的速度更快,但元组是一个不可变的序列,也就是与str一样,无法在原位改变它的值。除此之外,其他属性与列表基本一致。

       元组是Python中内置的一种数据结构。元组由不同的元素组成,每个元素可以存储不同类型的数据,如字符串、数字甚至元组。元组是写保护的!即元组创建后不能再做任何修改操作,元组通常代表一行数据,而元组中的元素代表不同的数据项。

元组的创建

#-*-coding:utf-8-*-
import sys
if __name__=="__main__":
    tuple_name=("apple","banana","grape","orange")
    print tuple_name[0]

分片输出

#-*-coding:utf-8-*-
import sys
if __name__=="__main__":
    tuple_name=("apple","banana","grape","orange")
    print tuple_name[1]
    #支持分片输出
    print tuple_name[-1]
    print tuple_name[-2]
    print tuple_name[1:3]
    #我还可以在元组中包含自已
    print '-----------------'
    tuple=(('t1','t2'),('t3','t4'))
    print tuple[0][0]
    print tuple[1][0]

实现解包的功能

#-*-coding:utf-8-*-
import sys
if __name__=="__main__":
    tuple_name=("apple","banana","grape","orange")
    a,b,c,d=tuple_name
    print a,b,c,d

元组定义的方法与列表类似,不过在定义只包含一个元素的元组时,注意在后边加一个逗号,请体会以下几句的差异:

#-*-coding:utf-8-*-
import sys
def Main():
    test=[0]               #列表可以这样定义
    print type(test)      #输出<type 'list'>
    test=[0,]              #也可以这样定义
    print type(test)      #输出<type 'list'>
    test=(0,)              #元组可以这样定义
    print type(test)      #输出<type 'tuple'>
    test=(0)               #但不能这样定义,Python会认为它是一个括号表达式
    print type(test)      #输出<type 'int'>
    test=0,                #也可以省略括号,但要注意与C的逗号表达式不同
    print type(test)   #输出<type 'tuple'>
    #还可以简单的交换数据
    a=1
    b=2
    a,b=b,a
    print a,b
if __name__=="__main__":
    Main()

总结

       以上这类语句在Python中被广泛应用于变量交换、函数传值等应用,因此Python的解析器在不断对其进行优化,现在已经具备了相当高的效率。所以以上代码在Python2.5以后的版本中,比tmp=a;a=b;b=tmp这种常规语句更快。

  • Python是一种动态的强类型语言,在使用变量之前无须定义其类型,但是必须声明和初始化
  • “一切命名是引用”,Python中变量名是对象的引用,同一变量名可以在程序运行的不同阶段代表不同类型的数据
  • “一切数据都是对象”,Python的所有数据类型都是对象,相较java具有一致的使用方法
  • 把问题想得更简单一点,Python的数值类型可以说只有两种:整形和浮点
  • 多使用list/tuple/set/dict这几种很pythonic的数据类型,它们分别用[]/()/([])/{}定义