列表、元组和字符串
- 可变(mutable)对象: 列表、字典、集合
所谓可变是指可变对象的值可变,身份是不变的。 - 不可变(immutable)对象:数字、字符串、元组、键
- 映射类型:字典
- 序列类型:字符串,元组,列表
不可变对象就是对象的身份和值都不可变。新创建的对象被关联到原来的变量名,旧对象被丢弃,垃圾回收器会在适当的时机回收这些对象。 - 容器数据类型
列表<class 'list'>
元组<class 'tuple'>
字典<class 'dict'>
集合<class 'set'>
字符串<class 'str'>
- 简单数据类型
整型<class 'int'>
浮点型<class 'float'>
布尔型<class 'bool'>
- 涉及到通过索引值获取元素的,都是
x[]
是中括号,x可是列表、元组、字符串 - 列表、元组和字符串的共同点:
都可以通过索引得到每一个元素
默认的第一个元素的索引值是0
可以通过切片得到一个范围内的元素的集合
有很多共同的操作符
06列表
笔记
-
列表定义语法为:[元素1, 元素2, …, 元素n]
-
二维列表:
[[元素1, 元素2, ..., 元素n],[元素1, 元素2, ..., 元素n],....]
-
列表的元素可以是任何对象,列表中所保存的是对象的指针
-
可以通过列表构建数组,x=[a]*4操作中,若a发生改变,则4个a都会发生改变
-
列表的元素可以更改(mutable),对应操作:
附加(append
,extend
)
插入(insert
)
删除(remove
,pop
) -
append
和extend
的区别:append只能添加一个参数,并保持该参数原有数据类型(任何类型的都可),把一个东西整体放在原列表后。extend是用新序列扩展原序列,要补充的参数必须放在中括号[]里,可以补充多个参数 -
del x[m:n]删除索引值m到n-1的元素
-
如果你要从列表中删除一个元素,且不再以任何方式使用它,就使用
del
;如果在删除元素后还能继续使用它,就使用pop()
。 -
浅拷贝与深拷贝:
浅拷贝(shallow copy)只复制指向某个对象的指针,而不复制对象本身,新旧对象共享同一块内存,改变就对象
深拷贝(deep copy)会另外创造一个一模一样的对象,新对象跟原对象不共享内存,修改新对象不会改到原对象
浅拷贝与深拷贝的对比 -
sort
:排序规则reverse = True
降序,reverse = False
升序(默认) -
lambda
匿名函数
练习sort
1、 列表操作练习
列表lst 内容如下
lst = [2, 5, 6, 7, 8, 9, 2, 9, 9]
- 请写程序完成下列操作:
- 在列表的末尾增加元素15
- 在列表的中间位置插入元素20
- 将列表[2, 5, 6]合并到lst中
- 移除列表中索引为3的元素
- 翻转列表里的所有元素
- 对列表里的元素进行排序,从小到大一次,从大到小一次
#列表操作练习
lst=[2, 5, 6, 7, 8, 9, 2, 9, 9]
#1.在列表的末尾增加元素15
lst.append(15)
#2.在列表的中间位置插入元素20
lst.insert(5,20)
#3.将列表[2, 5, 6]合并到lst中
lst=lst+[2,5,6]
#4.移除列表中索引为3的元素
lst.remove(lst[3])
#5.翻转列表里的所有元素
lst.reverse()
#6.对列表里的元素进行排序,从小到大一次,从大到小一次
lst.sort(reverse=False)#从小到大
lst.sort(reverse=True)#从大到小
2、修改列表
问题描述:
lst = [1, [4, 6], True]
请将列表里所有数字修改成原来的两倍
#修改列表
lst = [1, [4, 6], True]
lst[0]=lst[0]*2
lst[1][0] *= 2
lst[1][1] *= 2
3、leetcode 852题 山脉数组的峰顶索引
如果一个数组k符合下面两个属性,则称之为山脉数组
数组的长度大于等于3
存在 i i i, i i i >0 且 i < len ( k ) − 1 i<\operatorname{len}(k)-1 i<len(k)−1, 使得 k [ 0 ] < k [ 1 ]