Python入门(6):Python序列结构-元组
在数学里,序列也称为数列,是指按照一定顺序排列的一列数,而在程序设计中,序列是一种常用的数据存储方式,几乎每种程序设计语言都提供了类似的数据结构,如C语言或Java 中的数组等。
在 Python 中,序列是最基本的数据结构。它是一块用于存放多个值的连续内存空问。Python 中内置了5个常用的序列结构,分别是列表、元组、集合、字典和字符串。
元组:
列表List使用[]中括号表示,而元组Tuple使用小括号()表示
元组类似于C#的Tuple[.net 4.0或之后版本],定义后无法篡改指定的元素,如需更改,必须全部实例化元组
在 Python 中,虽然元组是使用一对小括号将所有的元素括起来。但是实际上,小括号并不是必需的,只要将一组值用逗号分隔开来,Python 就可以认为它是元组。
如果要创建的元组只包括一个元素,则需要在定义元组时,在元素的后面加一个逗号","
在 Python 中,也可以创建空元组,如下空元组代码:
emptytuple=()
在 Python 中,可以使用 tuple()函数直接将 range()函数循环出来的结果转换为数值元组。
对于已经创建的元组,不再使用时,可以使用 del语句将其删除
元组是不可变序列,所以我们不能对它的单个元素值进行修改,但是元组也不是完全不能修改。我们可以对元组进行重新赋值。
在进行元组连接时,连接的内容必须都是元组。不能将元组和字符串或者列表进行连接。
在进行元组连接时,如果要连接的元组只有一个元素,一定不要忘记后面的逗号
元组推导式
randomNumber=(random.randint(10,100) for i in range(10))
print("返回生成器对象:",randomNumber)
返回生成器对象: <generator object <genexpr> at 0x000002042946D620>
使用元组推导式生成的结果并不是一个元组或者列表,而是一个生成器对象,这一点和列表推导式是不同的。要使用该生成器对象,可以将其转换为元组或者列表。其中,转换为元组使用 tuple()函数,而转换为列表则使用 list()函数。
元组与列表的区别
列表和元组的区别主要体现在以下5个方面。
(1)列表属于可变序列,它的元素可以随时修改或者删除,而元组属于不可变序列,其中的元素不
可以修改,除非整体替换。
(2)列表可以使用 append()、extend()、insert()、remove(), pop()等方法实现添加和修改列表元素而元组则没有这几个方法,因为不能向元组中添加和修改元素。同样,也不能删除元素。
(3)列表可以使用切片访问和修改列表中的元素。元组也支持切片,但是它只支持通过切片访问元
组中的元素,不支持修改。
(4)元组比列表的访问和处理速度快。所以如果只需要对其中的元素进行访问,而不进行任何修改,建议使用元组而不使用列表。
(5)列表不能作为字典的键,而元组可以。
测试程序如下:
文件TupleSnake.py
import random
tup=("身无彩凤双飞翼","心有灵犀一点通")
print(tup)
#python中元组可以省略小括号(),但必须用逗号分隔
tup="秦皇汉武","唐宗宋祖"
print(tup)
print(type(tup))
#python中空元素不是None,只是len()为0
print("空元组",(),len(()),()==None)
tup=tuple(range(10,50,5))
print(tup)
#元组也是使用索引来访问,如下访问前三个元素
print(tup[0:3])
for i in tup:
print(i,end="\x20") #不换行输出输入,end=XX,默认print是换行的
print("\n-----筛选整除-----")
for index,item in enumerate(tup):
if item%10==0:
print("--索引[",index,"]=",item,"能被10整除:")
else:
print("--索引[", index, "]=", item, "不能被10整除:")
tup+=(50,60)
print(tup)
tup=tup+(55,)
print(tup)
print("-----元组推导式-----")
randomNumber=(random.randint(10,100) for i in range(10))
print("返回生成器对象:",randomNumber)
randomNumber=tuple(randomNumber)
print("转化为元组对象:",randomNumber)
print("-----使用next()返回前三个元素,next()函数获取指定的元素并从集合中移除-----")
number=(i for i in range(50,60))
print(number.__next__())
print(number.__next__())
print(number.__next__())
print("-----将剩余的元素转化为元组-----")
number=tuple(number)
print(number)