# Tuple（元组）

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

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

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

元组中**只包含一个元素时，需要在元素后面添加逗号**，否则括号会被当作运算符使用

```python
tup1 = ('Google', 'Runoob', 1997, 2000)
tup2 = (1, 2, 3, 4, 5)
tup3 = "a", "b", "c", "d"   #  不需要括号也可以
tup4 = () # 创建空元组

tup5 = (50)
type(tup1)     # 不加逗号，类型为整型

tup1 = (50,)
type(tup1)     # 加上逗号，类型为元组
```

## 访问元组中的值

与[字符串的索引](https://lujw666.gitbook.io/learn/python/00-basic/00-bian-liang/01-bian-liang-lei-xing/02-zi-fu-chuan)一样，元组索引从 0 开始，第二个索引是 1，依此类推。

索引也可以从尾部开始，最后一个元素的索引为 -1，往前一位为 -2，以此类推。

使用下标索引来访问元组中的值，同样也可以使用方括号 \[] 的形式截取字符。

```python
tup1 = ('Google', 'Runoob', 1997, 2000)
tup2 = (1, 2, 3, 4, 5, 6, 7 )

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

> 以上实例输出结果：\
> tup1\[0]: Google\
> tup2\[1:5]: (2, 3, 4, 5)

## 修改元组

元组中的元素值是不允许修改的，但可以对元组进行连接组合，如下实例:

```python
tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')

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

# 创建一个新的元组
tup3 = tup1 + tup2
print (tup3)
```

> 以上实例输出结果：\
> (12, 34.56, 'abc', 'xyz')

## 删除元组

元组中的元素值是不允许删除的，但可以使用del语句来删除整个元组。

```python
tup = ('Google', 'Runoob', 1997, 2000)

print (tup)
del tup
print ("删除后的元组 tup : ")
print (tup)
```

> 以上实例输出结果：\
> ('Google', 'Runoob', 1997, 2000)\
> 删除后的元组 tup :\
> Traceback (most recent call last):\
> File "test.py", line 8, in \<module>\
> print (tup)\
> NameError: name 'tup' is not defined

## 元组运算符

| Python 表达式                            | 结果                           | 描述         |
| ------------------------------------- | ---------------------------- | ---------- |
| len((1, 2, 3))                        | 3                            | 长度         |
| (1, 2, 3) + (4, 5, 6)                 | (1, 2, 3, 4, 5, 6)           | 组合         |
| ('Hi!') \* 4                          | ('Hi!', 'Hi!', 'Hi!', 'Hi!') | 重复         |
| 3 in (1, 2, 3)                        | True                         | 元素是否存在于列表中 |
| for x in (1, 2, 3): print(x, end=" ") | 1 2 3                        | 迭代         |

## 元组内置函数

| 函数              | 描述          |
| --------------- | ----------- |
| len(tuple)      | 计算元组元素个数    |
| max(tuple)      | 返回元组中元素最大值  |
| min(tuple)      | 返回元组中元素最小值  |
| tuple(iterable) | 将可迭代系列转换为元组 |

[demo](https://github.com/lujw666/learn/blob/develop/python/00-basic/03-variable/01-variabletype/04-%E5%85%83%E7%BB%84.py)
