#!/usr/bin/python
# -*- coding: UTF-8 -*-

"""
Python的元组与列表类似，不同之处在于元组的元素不能修改。

元组使用小括号“()”，列表使用方括号“[]”。

元组创建，只需要在括号中添加元素，并使用逗号隔开即可。

元组与字符串类似，下标索引从0开始，可以进行截取，组合等。
"""
# create
print("..........................................Create...................................................")
# 1、创建一个空元组
c0 = ()

# 2、直接赋值
# 元组中只包含一个元素时，需要在元素后面添加逗号
c1 = ('physics', 'chemistry', 1997, 2000)
c2 = (1, 2, 3, 4, 5)
c3 = "a", "b", "c", "d"   # 不加括号也可以
c4 = (5,)

print("c1:", c1)
print("c2:", c2)
print("c3:", c3)
print("c4:", c4)

# add
print("..........................................Add...................................................")
list = [1, 2, 3, 4, 5]

c2 = tuple(list)

print("c2:", c2)

# modify
print("..........................................Modify...................................................")
# 元组中的元素值是不允许修改的，但是可以对元组进行连接组合，达到修改的效果
m1 = (12, 34.56)
m2 = ('abc', 'xyz')

# 以下修改元组元素操作是非法的。
# tup1[0] = 100

# 创建一个新的元组
m3 = m1 + m2
print("m3:", m3)

# 元组是无法进行重新赋值的，需要将元组进行转换后在进行重新赋值，如转换为list

# search
print("..........................................Search...................................................")
# 元组可以使用下标索引来访问元组中的值
s1 = ('physics', 'chemistry', 1997, 2000)
s2 = (1, 2, 3, 4, 5, 6, 7)

print("tup1[0]: ", s1[0])
print("tup2[1:5]: ", s2[1:5])

# delete
print("..........................................Delete...................................................")
# 元组中的元素值是不允许删除的，但是可以使用del语句删除整个元组。
d1 = ('physics', 'chemistry', 1997, 2000)

print("d1:", d1)

del d1
# print("After deleting tup : ", d1)    #会报错，因为元组被删除了

# traversal
print("..........................................Traversal...................................................")
t1 = ('physics', 'chemistry', 1997, 2000)

print("元组的遍历")
for i in range(len(t1)):
    print(t1[i])
