第八讲:元组

元组

说明:

  1. 元祖的元素的个数和值不能修改,不能再增加或删除,其他的运算操作同列表 
  2. 不可变的tuple有什么意义?因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。
  3. 如果用列表传参给一个函数,但是不想被调用的函数改变数据,可以将列表转换为元组再进行操作:tuple()
  4. tuple的陷阱:当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来

1、创建元组:

tu=()

元组只有一个元素时,后面需要加逗号”,“,因为‘abc’等同于('abc'),如

tupe1=('abc',)

2、(查)访问获取元组:通过下标索引获得,for遍历

tup1 = ('physics', 'chemistry', 1997, 2000)
tup2 = (1, 2, 3, 4, 5, 6, 7 )
print ("tup1[0]: ", tup1[0])
print ("tup2[1:5]: ", tup2[1:5])

运行结果:
tup1[0]:  physics
tup2[1:5]:  (2, 3, 4, 5)

 for遍历:

#遍历元组
zoo = ('wolf', 'elephant', 'penguin')
new_zoo = ('monkey', 'dolphin', zoo)
for animal in zoo:
    print (animal)
print ('-'*10)

#遍历嵌套元组:
for animal in new_zoo:
    if isinstance(animal,tuple):
        for newAnimal in animal:
            print (newAnimal)
    else:
        print (animal)


运行结果:
wolf
elephant
penguin
----------
monkey
dolphin
wolf
elephant
penguin

3、(改)元组中的元素值是不允许修改的,元组中的可变对象可以修改,可以对元组进行连接组合

实例1:

tup1 = (12, 34.56) tup2 = ('abc', 'xyz') tup3 = ('abc',['A','B','C']) # 以下修改元组元素操作是非法的,会报错 # tup1[0] = 100 # 创建一个新的元组 tup4 = tup1 + tup2 print (tup4) # 修改元组内的列表元素(list本身可变) tup3[1][0]='X' tup3[1][1]='Y' tup3[1][2]='Z' print (tup3)

运行结果:
(12, 34.56, 'abc', 'xyz')
('abc', ['X', 'Y', 'Z'])

如果需要对元组的元素进行添加、修改操作,对元组进行列表转换操作,再对列表类型的元素操作:list()

tup1 = ('physics', 'chemistry', 1997, [198,987,27], 2000)
# 方法1:
tup1[3].extend([123,12])    #extend(列表)
print (tup1)
# 方法2:
tup1[3].append(123)         #append(元素)
tup1[3].append(12)
print (tup1)
#方法3:
for i in tup1:
    if isinstance(i,list):
        i.extend([123,12])
print (tup1)


运行结果:
('physics', 'chemistry', 1997, [198, 987, 27], 2000)

4、(删)不能对元组进行修改:

如下例子修改会报错:

tup = ('physics', 'chemistry', 1997, 2000);
print (tup)
del tup
print ("After deleting tup : " )
print (tup)

运行结果:
('physics', 'chemistry', 1997, 2000)
Traceback (most recent call last):
After deleting tup :
  File "E:/workplace/2019pratice/practice1.py", line 227, in <module>
    print (tup)
NameError: name 'tup' is not defined

5、元组运算符:

 

6、元组的索引、截取:

L = ('spam', 'Spam', 'SPAM!')

 7、元组的内置函数:(python3.7没有cmp函数)

原文地址:https://www.cnblogs.com/wenxiacui/p/10964047.html