序列
可变序列:
- 比如列表:列表名(或称为列表引用)指向堆空间中的一个列表。列表引用当中存储的内容为地址,可以指向堆内存中的具体对象.
- 一方面,该列表可以保证在地址不变的前提下,改变列表内容;另一方面,该引用也可以直接指向堆空间中的另外一个列表…
不可变序列:
- 比如数字、字符、(元祖):对于基础数据类型,变量地址即变量本身,所以值发生变化了,内存地址就一定也变了。
- 比如字符串:被称为不可变的字符序列,每个字符底层均有规范的Unicode码对应,内存规定无法对单一的一个字符进行修改,要修改字符串必须重新指向一个全新的字符串
1.列表[ ]
- 1.1 列表的组成和切片
- 列表可以存储所有类型的数据
- 格式: [ , , , , ],中括号和逗号分隔元素
- 可以切片[开始,结束,步长]: 从现有列表选择出子列表, 切片不改变原有列表。步长即每几个元素取第一个元素。
- 1.切片[0]取值可以从0开始,取得是第一位
- 2.切片[a:b]从第a位开始取,取到第b-1位,取不到第b位
- 3.[a:]从a取到最后, [:b]从开始取到b-1位,取不到第b位
- 4.[:]取所有
- 5.[a,b,c] 以步长为c从a取到b-1
- 6.步长若为负数,则是从列表末尾开始以步长取值
- 7.len[]: 列表的长度
- 1.2 列表的运算
- 加法:list1 + list2 = list3
- 乘法:list * 数字
- 1.3 列表的逻辑运算
- in:元素 in list
- 判断是否在列表内,返回布尔值
- not in:元素 not in list
- 判断是否不在列表内,返回布尔值
- 注意:in和not in在pycharm中不会自动补全
- min():返回列表最小值
- max():返回列表最大值
- list.index(a,起始位置,结束位置) : 获取指定元素在列表中的位置,注意:依然取不到结束位置
- list.count() :获取指定元素在列表中出现的次数
- 1.4 列表的修改和删除
- 修改:list[索引值] = ‘修改后的值’
- 删除:del[索引值]
- 可以用切片实现批量修改和删除。注意传入的字符数量或字符串数量可以不同,也就是说a个元素可以替换为b个元素
- 特殊:
- 1.list[0:0] 向索引为0位置插入元素
- 2.list[a,b] = [] , 删除索引为a~b-1的元素
- 特别注意:
- 1.传入的内容为字符串,则会按照每个字符传入。传入的内容为列表,则会按照列表传入。
- 2.序列中元素的个数必须与切片中元素的个数保持一致
- 3.切片值不要超出最大索引值
- 1.5 列表的方法
- .apend(参数)
- .insert(要插入的位置,参数)
- .extend(序列)
- .clear()
- .pop()
- 弹出元素,并把弹出的值作为返回值
- 若不传索引则删除最后一个元素
- .remove()
- 根据指定值删除元素,如果有相同值的元素,只删除第一个
- .reverse()
- 让列表中的元素反序,反转列表
- 注意,reverse()输出为None,反转列表输出列表自己即可,若把输出结果赋值,打印为None
- .sort() 参数.reverse =
- 对列表中的元素进行排序 ,默认升序
- reverse = True 降序
- 1.6 列表的高级应用
- 列表的遍历
- 用while实现
i = 0
while i < len(list)
print(list[i])
i += 1
for ele in list:
print(ele)
- 常用的range(a,b,c)
- c为步长
range(5) 等价于 range(0,5) 等价于 range(0,5,1)