尽管元组支持大部分操作与列表相同(如索引,切片和连接),但是创建完元组后不能修改它的内容(即就是无法替换,删除或者添加新的元素)。可以把元组看成一个由多个部分组成的单一对象,而不是可在其中插入或删除项的不同对象的集合。
address = ('www.python.org', 80)
first_name = 'Allen'
last_name = 'Iverson'
phone = 123456
person = (first_name, last_name, phone)
#没有圆括号python也能识别出元组
stock = 'GOOD', 100, 490.10
print(address)
print(person)
print(stock)
a = () #0个元素的元组
item = 'Hot'
b = (item,) #1元组(注意随后的逗号)
c = item, #1元组(注意随后的逗号)
d = (55) #不加逗号表示整型,加上逗号就表示元组
print(a)
print(b)
print(c)
print(d)
address = ('www.python.org', 80)
first_name = 'Allen'
last_name = 'Iverson'
phone = 123456
person = (first_name, last_name, phone)
print("address[0]:", address[0])
print("person[1]:", person[1])
del address #使用del删除整个元组
print("删除后的元组为:")
print(address) #这句会报错“NameError: name 'address' is not defined”,因为address已经被删除了
与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组
happy = (1, 2, 3)
a = len(happy) #计算元素个数
print(a)
happy1 = happy + (4, 5, 6) #使用“+”对元组进行连接
print(happy1)
happy2 = ("yuanzu",)*4 #复制
print(happy2)
for x in happy1: #迭代
print (x,)
运行结果如下:
3
(1, 2, 3, 4, 5, 6)
('yuanzu', 'yuanzu', 'yuanzu', 'yuanzu')
1
2
3
4
5
6
和列表一样,元组能使用数字索引来提取元组中的值,然而,更常见的作法是将元组解包为一组变量
stock = ('GOOD', 100, 490.10)
name, shares, price = stock #元组的解包
print("name is", name)
print("shares is", shares)
print("price is", price)
输出结果为:
name is GOOD
shares is 100
price is 490.1
因为元组也是一个序列,所以我们可以访问元组中的指定位置的元素,也可以截取索引中的一段元素,如下所示:
L = ('apple', 'xiaomi', 'oppo', 'nokia')
a = L[2] #读取第三个元素
b = L[-2] #反向读取;读取倒数第二个元素
c = L[1:] #截取元素,从第二个开始后的所有元素。
print(a)
print(b)
print(c)
输出结果为:
oppo
oppo
('xiaomi', 'oppo', 'nokia')
Python元组包含了以下内置函数
1.计算元组元素个数—len
stock = ('GOOD', 100, 490.10)
print(len(stock))
2.返回元组中元素最大值—max
L = ('5', '4', '8')
print(max(L))
3.返回元组中元素最小值—min
L = ('5', '4', '8')
print(min(L))
L = ('system', '4', '8')
print(min(L))
4.将列表转换为元组—tuple
list1 = ['apple', 'xiaomi', 'oppo', 'nokia']
print("转换之前",list1)
seq = tuple(list1)
print("转换之后",seq)
因为组元与列表有很多相似之处,但是不要忽略元组,而使用列表,因为后者看似方便灵活,但是计算机为此也付出了巨大的代价。如果程序创建了大量的小列表(包含的项少于十),则会造成内存的浪费。因为系统会为列表分配稍微多一些的内存,以便于优化添加新项操作的性能。而由于元组是不可变的,所以他们的展现更为紧凑,不会占用额外的内存空间