python学习笔记(06)---(内置容器-元组)

第七章  内置容器(二)

3.元组

(1)元组(tuple)将一组不可变的数据序列组合起来,形成一个特殊的内置容器

(2)元组不允许的操作:

<1> 修改、新增元素

<2> 删除元素(允许删除整个元组)

<3> 所有会对整个元组内部元素发生变化的方法都无法使用(append,remove,pop等)

(3)元组的操作

<1> 创建tuplename=(element1,element2,……elementn)。元素个数无限制,类型也可不相同

a = (1, 2, 3, 4, 5)
b = (1,)  # 一个元素的元组,逗号不能省略
c = (1)  # 不是元组,是给c赋值1
d = ()  # 空元组
e = tuple(range(0, 20,2))  # 使用tuple()函数创建元组

s1=('china','hello','world')
s2=(23,'python',[1,2,3,4,5])
s3='python','hello','dashabi'  # 圆括号可以省略

<2> 删除元组:del tuplename(不支持单个元素的修改)

t1=(1,2,3,4,5)
t2=('abc','xyz')
# t1[0]=100  # 报错
t1=(6,7,8,9,0)  # 支持整体处理
t3=t1+t2
print(t3)
del t1
del t2
# PS:元组为不可变序列,不支持单个元素的删除,可以整体赋值覆盖
# (6, 7, 8, 9, 0, 'abc', 'xyz')
t1=('a','b','c',['A','B','C'])
t1[3][0]='x'
t1[3][1]='y'
t1[3][2]='z'
print(t1)
# PS:元组只可保证一级子元素不可变,对内嵌元素不保证不可变
# ('a', 'b', 'c', ['x', 'y', 'z'])

<3> 元组连接时必须维持元组性质(结构和内容),不能连接字符串或列表

t1=(1,2,3)
l1=[1,2,3]
# t2=l1+t1  # 报错
# t2=t1+'hello'  # 报错

<4> 元组连接的对象只有一个元素时,必须加逗号

t1=(1,2,3)
t2=t1+(4,)
print(t2)
# (1, 2, 3, 4)

<5> 元组的读取:定义时使用(),若要读取访问元组内容, 依然和列表一样使用 [ ] 配合索引实现

n1=(1,2,3,4,5)
s1='apple','orange'
print(n1[1],s1[1])  # 此时中括号是访问内部元素
# 2 orange

<6> 元组切片:与列表操作方式相同

import random as a

# t1=a.sample(range(0,10),10)  # 默认返回列表
# [5, 4, 7, 8, 2, 1, 9, 3, 0, 6]
t1 = tuple(a.sample(range(0, 10), 10))
print(t1)  # (6, 7, 8, 2, 0, 3, 1, 5, 4, 9)
print(t1[1:3])  # (7, 8)
print(t1[:4])  # (6, 7, 8, 2)
print(t1[5:])  # (3, 1, 5, 4, 9)
print(t1[-2:])  # (4, 9)
print(t1[-3:3:-1])  # (5, 1, 3, 0)
print(t1[0:5:3])  # (6, 2)

<7> 元组与列表的数据互换

  • list():转为列表
  • tuple():转为元组
t1 = (123, 'hello', '999', 34, 5)
l1 = list(t1)
l1.append('china')
print(l1)
t1 = tuple(l1)
print(t1)
# [123, 'hello', '999', 34, 5, 'china']
# (123, 'hello', '999', 34, 5, 'china')

(4)元组与列表的区别

<1> 元组与列表都属于序列,都可以按照特定顺序来存储一组数据,类型个数不受限制

<2> 区别:

  • 列表是可变序列,元素可以随时修改(增删)。元组为不可变序列,元素内容不可修改、删除,除非整体替换
  • 元组不支持append(),extend(),remove(),insert()等方法
  • 元组仅能通过切片进行访问
  • 元组比列表结构简单,占用资源少,程序运行速度快
  • 元组比列表安全
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨天_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值