python中的元组

Python的元组与列表类似,不同之处在于元组的元素不能修改,属于不可变数据类型

元组使用小括号,列表使用方括号。元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

创建元组:           方式一:(1, 2, 3)    方式二: 1,2,3

tup1 = ('physics', 'chemistry', 1997, 2000)
tup2=() #创建空元组
tup3 =('beijing',)  #元组中只包含一个元素时,需要在元素后面添加逗号

访问元组对象: 索引和分片

tup4 = ('physics', 'chemistry', 1997, 2000)
print tup4[0]   #通过索引访问元组的第一个数据   physics  
print tup4[-1]   #通过索引访问元组的最后一个数据   2000
print tup4[0:2]   #通过分片访问第一和第二个数据    ('physics', 'chemistry')

元组运算符:  + 连接: tup3 = tup1 + tup2;       *N 复制并连接: 重复N次 tup3 = tup1 * 3

tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')
print tup1+tup2  #(12, 34.56, 'abc', 'xyz')
print tup1 * 3  # (12, 34.56, 12, 34.56, 12, 34.56)

删除元组:

del语句来删除整个元组,

a =(1,2,3)
del a

元组的内置函数

tup1 = (12, 34.56,33,88)
tup2 = ('abc', 'xyz')
print cmp(tup1, tup2)  #比较两个元组元素   -1
print len(tup1)  #计算元组元素个数   4
print max(tup1) #返回元组中元素最大值。  88 
print min(tup1)  #返回元组中元素最小值  12
aList = [123, 'xyz', 'zara', 'abc'];
aTuple = tuple(aList)  # 要转换为元组的序列
print aTuple      (123, 'xyz', 'zara', 'abc')
元组操作:

index : T.index(value)获取元素在元组中的索引值,对于重复的元素,默认获取从左起第一个元素的索引值

count : T.count(value)返回元组中某元素的个数

aList = (123, 'xyz', 'zara', 'abc',123)
print aList.index('xyz')   #索引位置是2
print aList.count(123)  #2个

元组嵌套:

多维元素: ((1, 2, 3), (4, 5, 6))   

 *元组虽然不可变,但是当元组中嵌套可变元素时,该可变元素是可以修改的,元组本身不变

tup11=(1,[1,2,3,4],2)
tup11[1][1]=0
print tup11

输出:(1, [1, 0, 3, 4], 2)

如何访问多维元组 例子:

a = ((1, 2, 3), (4, 5, 6))   #如果想访问,多维元组中的5,

print a[1][1]   #输出结果就是 5

和Java中数组的区别:
1.定义的时候不需要指定长度和存储的数据类型
2.不可以修改其中任何一项数据的值
3.可以追加值但是对象会重新创建
4.可以嵌套组成多维数据结构

练习:员工工资表,查询结果集如下:((1, 'zhangsan', 3000), (2, 'lisi', 2500), (3, 'tiantian', 20000))

1.计算员工的平均工资

*2.输出工资最高的员工姓名

#计算员工的工资之和和最高工资
a = ((1, 'zhangsan', 3000), (2, 'lisi', 2500), (3, 'tiantian', 20000))
sum = 0
avg = 0
for i in a:
    sum+=i[-1]
    avg = sum /len(a)
print '员工的工资之和是%d元'%sum
print '员工的平均工资是%d元'%avg
#输出工资最高的员工姓名
for b in range(len(a)):
    temp = 0
    j = 0
    if a[b][-1]>temp:
        temp = a[b][-1]
print "工资最高的人是:%s" % a[j][1]

猜你喜欢

转载自blog.csdn.net/xxlovesht/article/details/80397901