Python中的列表与元组

#一、序列
l 成员有序排列的,且可以通过下标偏移量访问到它的一个或者几个成员,这类类
型统称为序列。
l 序列数据类型包括:字符串,列表,和元组类型。
l 特点: 都支持下面的特性
1、索引与切片操作符
2、成员关系操作符(in , not in)
3、连接操作符(+) & 重复操作符(*)
#二、列表
Python中的列表与C语言中的数组不同,数组中存储的是同一种数据类型的集合,而列表中可以存储任意数据类型的集合

在这里插入图片描述
(1)列表的特性一:索引与切片

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(2)列表的特性二:成员操作符

在这里插入图片描述(3)列表的特性三:连接操作符
在这里插入图片描述
上面提到的这些列表的特性都和字符串的特性是类似的,但是列表与字符串是有差异的,字符串是不可变的数据类型,而列表是可变的数据类型。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看出更改之后li的id是没有变化的,说明只是更改了li元素的值,变量并没有改变

列表的特性:
练习1
根据指定月份,打印该月份所属的季节。
提示: 3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季
考察点: 列表的成员操作符, if判断语句
month = [12,1,2,3,4,5,6,7,8,9,10,11]
while True:
s = int(input(‘请输入指定月份:’))
if s in month[3:6]:
print(‘春季’)
elif s in month[6:9]:
print(‘夏季’)
elif s in month[9:]:
print(‘秋季’)
elif s in month[0:3]:
print(‘冬季’)
else:
break

(4)列表特性四:增删改查
1、列表的增加:
列表可通过append追加一个元素到列表中;
列表可通过extend方法拉伸, 实现追加多个元素到列表中
在指定位置添加元素使用insert方法; L.insert(index, object)
在这里插入图片描述
在这里插入图片描述
2、列表的修改
修改列表的元素:直接重新赋值;
在这里插入图片描述
在这里插入图片描述
3、列表的查看
查看某个列表元素的下标用index方法;
查看某个列表元素出现的次数用count方法;
在这里插入图片描述
在这里插入图片描述
4、列表元素的删除
list.remove()删除列表中的指定元素。
list.pop()根据元素的索引值进行删除指定元素。
list.clear: 清空列表里面的所有元素。
在这里插入图片描述
在这里插入图片描述
5、列表的其他操作
在这里插入图片描述注意:变量名与函数名不能重复调用,否则不会报错TypeError: ‘int’ object is not callable

#二、元组
元组的创建,删除及特性
1). 定义空元组 tuple = ()
2). 定义单个值的元组 tuple = (fentiao,)
3). 一般的元组 tuple = (fentiao, 8, male)
在这里插入图片描述
在这里插入图片描述
注意:元组是不可变数据类型,不能对元组的值任意改变

元组的查看方法:
t.count(value)–>int 返回value在元组中出现的次数;
t.index(value) 返回value在元组中的偏移量(即索引值)

在这里插入图片描述

元组的赋值应用:
特性1: 对元组分别赋值,引申对多个变量也可通过元组方式分别赋值

在这里插入图片描述

变量交换:
x=2; y=10;x, y = y, 2; print(x,y)
这种交换方式无需中间变量即可交换两个变量的值。
实现机制:
1). 构造一个元组(y, x);
2). 构造另一个元组(x, y);
3). 元组(y, x)赋值给(x, y),元组赋值过程从左到右,依次进行

在这里插入图片描述

#三、命名元组
Tuple还有一个兄弟,叫namedtuple。虽然都是tuple,但是功能更为强大。
collections.namedtuple(typename, field_names)
typename:类名称
field_names: 元组中元素的名称
在这里插入图片描述
#四、is和的区别
问题: is和
两种运算符在应用上的本质区别是什么?
1). Python中对象的三个基本要素,分别是:id(身份标识)、type(数据类型)和value(值)。
2). is和==都是对对象进行比较判断作用的,但对对象比较判断的内容并不相同。
3). ==用来比较判断两个对象的value(值)是否相等;(type和value)
is也被叫做同一性运算符, 会判断id是否相同;(id, type 和value
在这里插入图片描述

#五、深拷贝和浅拷贝
深拷贝与浅拷贝的区别:
在这里插入图片描述
在这里插入图片描述
面试中常见的题目
问题: 深拷贝和浅拷贝的区别?/python中如何拷贝一个对象?
赋值: 创建了对象的一个新的引用,修改其中任意一个变量都会影响到另一个。(=)
浅拷贝: 对另外一个变量的内存地址的拷贝,这两个变量指向同一个内存地址的变量值。(li.copy(), copy.copy())
•公用一个值;
•这两个变量的内存地址一样;
•对其中一个变量的值改变,另外一个变量的值也会改变;
深拷贝: 一个变量对另外一个变量的值拷贝。(copy.deepcopy())
•两个变量的内存地址不同;
•两个变量各有自己的值,且互不影响;
•对其任意一个变量的值的改变不会影响另外一个;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值