list 列表属于可变列表
(1)可以包含任意对象有序集合,【如下图,任意数据类型,顺序跟我们存进入的一样】

(2) 通过下表索引访问,如下图所示甚至可以使用负数进行访问,-1是最后一个元素

下图访问范围: 从索引0到索引2。后面索引是不包含2的,请注意下

(3)可变长度。append方法进行追加

(4)任意嵌套

(5)支持原位改变, 可以看到从 25 变成 26

在内存中。Person变量是指向一块引用,然后引用在指向具体的值。

当 person[1] = 26; 那么内存的引用将重新指向一个新的对象

(6) 对象引用数组。由下图可以看出 y 变量 的 “Mike” 跟 x[1] 是同一个对象

List 的通用操作 【下面内容适用与其他列表】
(1)list函数,将一个值转化为list

(2)判断元素是否在集合里面【 (in)、(not in)】

(3)联接序列 list1 + list2 【list1,list2 本身没有任何改变】

(4)重复序列内容 list1 * n (n表示重复几次) ,【list1本身也没有改变】

(5)下标获取元素与访问指定索引范围

上面说了范围访问中后面的索引是不包括在结果里面的,下面图例解释一下

范围访问可以看作索引在缝隙的位置。索引访问 0-2的索引,值得出前2个
看到图中还以一个负数的索引。我们也可以通过负数索引进行访问范围。
范围访问 cities[:2] 前面不写,默认从0开始。
cities[1:] 后面不写,访问到最后
cities[:] 都不写,访问所有


(6)按照步长值访问指定索引访问 语法: list1[i:j:k]
k 为步长值。 k = 2。即是每2个取1个。(每k个取1个,最后不满k个,当k个取)

(7)获取序列长度。len函数

(8)列表的部分通用函数
最大值(max)
最小值(min)
总和(sum)
获取某元素的下表 list.index(x)
获取某元素在列表出现的次数 list.count(x)

可变序列及列表的通用操作
(1)改变某个元素的值 list[0] = x
(2)改变某个范围内的值 list[n:m] = t 。 t 表示一个可以迭代的值,数目必须与替换的范围保持一致

(3)删除元素 del 。 删除范围的另外一种写法 x[0:2] = [] 等于一个空的序列也是一种删除


(4) list.remove(x) 删除一个值。如果又相同值,则删除第一个匹配值

(5) list.clear() 清空列表

(6) 追加元素list.append(x) 与 扩展元素s.extend(list)

(7) list.insert(index,value) index 索引位置,value 具体值。在指定位置插入一个值
list.insert(0, 3.14) 等于 list[0:0] = [3.14]

(8) list.pop(index) 删除指定索引的元素,并将删除值返回。

(9) list.reverse() 反转。不返回值。而是改变自身的元素位置

(10)复制序列
list.copy()
y = list.copy() 等同于 y = list[:]

(11) 排序 list.sort() 没有返回值,也是影响本身
倒序 list.sort(key=None,reverse=True) 参数是否反转

sorted(list) 返回一个新的结果。不影响本身

扩展: sort 方法的 key 参数是一个lambda。 下面的意思是,根据第一个字母排序
