【Python基础学习篇】Python元组

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

一、元组的创建

Tuple(元组)由一系列元素组成,所有元素被包含在一对圆括号中。创建元组时,可以不指定元素的个数,相当于不定长的数组,但是一旦创建后就不能修改元组的长度

元组创建的格式如下所示:

tuple_name = (元素1,元素2,...)

例子:元组的初始化

tuple_name = ("apple","banana","grape","orange")

创建空的元组需要一对空的圆括号

tuple_name=()

元组中只有一个元素

tuple_name=("apple",)

注意:

元组的索引是从0开始计数的,因此tuple[0]获得的是元组tuple中第1个元素。

二、元组的访问

元组中元素的值通过索引访问。元组的访问格式如下:

tuple_name[n]

元组创建后其内部元素的值不能被修改,如果修改元组中的某个元素,运行时将报错。所以,元组不支持赋值操作。

负数索引从元组的尾部开始计数,最尾部的元素索引表示为“-1”,次尾端的元素索引表示为“-2”。

例如:

1

tuple[-1]的值为value4

tuple[-2]的值为value3

分片(slice)是元组的一个子集,分片是从第1个索引到第2个索引(不包含第2个索引所指向的元素)所指定的元素。

分片索引可以为正数或负数,分片的格式如下所示:

tuple_name[m:n]

例如:

1[1]

tuple_name[1:3]将返回(value2,value3,value4)

例子:演示负数索引和分片索引的使用方法

#!/usr/bin/env python

# -*- coding=utf-8 -*-
#Using GPL v2.7
#Author: [email protected]
tuple = ("apple","banana","grape","orange")
print tuple[-1]
print tuple[-2]
tuple2 = tuple[1:3]
tuple3 = tuple[0:-2]
tuple4 = tuple[2:-2]
print tuple2
print tuple3
print tuple4

输出结果:

---------- python2.7 ----------
orange
grape
('banana', 'grape')
('apple', 'banana')
()
输出完成 (耗时 0 秒) - 正常终止

元组还可以由其他元组组成。

例如,二元元组可以表示为:

tuple = (("t1","t2"),("t3","t4"))

例子:

#!/usr/bin/env python
# -*- coding=utf-8 -*-
#Using GPL v2.7
#Author: [email protected]
fruit1 = ("apple","banana")
fruit2 = ("grape","orange")
tuple = (fruit1,fruit2)
print tuple
print "tuple[0][1] = ",tuple[0][1]
print "tuple[1][1] = ",tuple[1][1]
print "tuple[0][1] = ",tuple[1][2]

输出结果:

---------- python2.7 ----------
(('apple', 'banana'), ('grape', 'orange'))
tuple[0][1] = banana ---表示访问tuple元组中的第1个元组的第2个元素
tuple[1][1] = orange ---表示访问tuple元组中的第2个元组的第2个元素
tuple[0][1] = ---表示访问tuple元组中的第2个元组的第3个元素,因为这个元素不存在,元组的索引访问越界,返回如下的报错信息。
Traceback (most recent call last):
  File "Noname1.py", line 12, in <module>
    print "tuple[0][1] = ",tuple[1][2]
IndexError: tuple index out of range
输出完成 (耗时 0 秒) - 正常终止

tuple元组的存储结构如下所示;

1[2]

在Python中,将创建元组的过程称之为“打包”。相反,元组可以执行“解包”操作。解包可以将元组中的各个元素分别赋值给多个变量。这样,避免了使用循环遍历的方法去获取每个元素的值,降低了代码的复杂性,表达方式更自然。

例子:

#!/usr/bin/env python
# -*- coding=utf-8 -*-
#Using GPL v2.7
#Author: [email protected]

#打包
tuple = ("apple","banana","grape","orange")
#解包
a,b,c,d = tuple
print a,b,c,d

输出结果:

---------- python2.7 ---------- 
apple banana grape orange 
输出完成 (耗时 0 秒) - 正常终止

三、元组的遍历

 

元组的遍历是指通过循环语句依次访问元组中各元素的值。遍历元组需要用到range()和len()这两个函数。说明:range()和len()都是python的内建函数,这些函数可以直接调用,不需要import语句导入模块。

len()计算出tuple元组中元素的个数,range()返回一个由数字组成的列表。

range()的声明如下:

range([start,]stop[,step])-->list of integers
说明:
1、range()返回一个递增或递减的数字列表,列表的元素值由3个参数决定的
2、参数start表示列表开始的值,默认为0
3、参数stop表示列表结束的值,该参数不可缺少
4、参数step表示步长,每次递增或递减的值,默认值为1

例如:

range(5)返回的列表为[0,1,2,3,4]

例子:

#!/usr/bin/env python
# -*- coding=utf-8 -*-
#Using GPL v2.7
#Author: [email protected]
#演示二元元组的遍历

tuple = (("apple","banana"),("grape","orange"),("watermelon",),("grapefruit",))
for i in range(len(tuple)):
    print "tuple[%d]"% i,"",
    for j in range(len(tuple[i])):
        print tuple[i][j],"",
    print

输出结果:

---------- python2.7 ----------
tuple[0]  apple  banana 
tuple[1]  grape  orange 
tuple[2]  watermelon 
tuple[3]  grapefruit 

输出完成 (耗时 0 秒) - 正常终止

还可以使用map()对tuple元组进行“解包”,得到每个子元组,然后对每个子元组进行遍历,输出tuple元组中所有元素的值。

map()的声明如下:

map(function,sequence[,sequence,...])-->list
说明:
1、map()返回一个由自定义函数function处理后的列表;
2、参数funtion是创建的函数,该函数用于处理参数sequence。如果function的值为none,则map()返回一个由参数sequence组成的元组或列表;
3、参数sequence表示序列,元组和列表都是序列。

例子:

#!/usr/bin/env python
# -*- coding=utf-8 -*-
#Using GPL v2.7
#Author: [email protected]
#演示map()实现元组的遍历

tuple = (("apple","banana"),("grape","orange"),("watermelon",),("grapefruit",))
k = 0
for a in map(None,tuple):
    print "tuple[%d]"% k,"",
    for x in a:
        print x,"",
    print
    k += 1

输出结果:

---------- python2.7 ----------
tuple[0]  apple  banana 
tuple[1]  grape  orange 
tuple[2]  watermelon 
tuple[3]  grapefruit 

输出完成 (耗时 0 秒) - 正常终止

 

 

 

 

 

 

 

 

你可能感兴趣的:(字符串,color,元素)