目录
方法二: 使用列表的 append 函数添加元素,元素在末尾
方法三: 使用列表的 extend 函数 ,参数是可迭代的就可以
终于到了python的丰富地带了,列表,功能很强大
列表的概念 []
列表的类型是 list ,因此创建的变量类型不要覆盖了关键字 list,这个和之前的 bool , str ,int ,float 一样 起变量名字不要覆盖
列表的创建
列表的创建十分简单,使用[]就可以定义一个列表了
l=[1,"2",4.0 ,fractions.Fraction(1,3) ]
列表的访问
使用数组下标进行访问
从0 开始的数组下标
如果是负数的下标,那么就从-1开始数数,但是是从列表的末尾开始数的
简单记忆就是 -n 表示为 : 列表的长度-n,前面省略了列表的长度
注意 -0=0 ,始终都是第一个的
列表的切片
获取列表的部分数据,返回值是一个新的列表
list[m:n]
表示从位置 m 开始截取 n个元素,如果不够就到列表末尾即可结束
可以认为是 位置为 [m,n-1]位置上的元素
其中:
右切片如果为空: 表示为列表的长度
例如列表长度=5,那么:
len[3:5]=len[3:]
左切片如果为空: 表示为0,从头开始
len[:3] = len[0:3]
左右都为空,表示复制这个列表
len[:]
如果左右切片下标有负数,那么就按照之前的位置即可
可以认为 负数下标 -n = 列表长度-n
给列表增加新的元素 四种方法
方法一: 列表 + 列表
此时的 + 会创建一个新的列表
方法二: 使用列表的 append 函数添加元素,元素在末尾
方法三: 使用列表的 extend 函数 ,参数是可迭代的就可以
添加一个列表给当前列表效果如图循环调用了 列表的 append函数
注意输入参数是可迭代的就行,列表可以,字符串也是可以的
方法四:使用 insert函数 在指定位置添加元素
做法是从指定位置的元素开始所有元素统一右移一个单位
然后再指定位置插入元素
删除列表的元素 三种方法
方法一: del操作符
使用 del 操作符删除 del 列表元素
方法二: 调用列表对象的 remove方法删除指定元素
方法三: 使用列表对象的 pop方法
该方法可以不指定参数,删除末尾元素,类似于堆栈的出栈操作
当然也可以指定参数,指定下标进行指定的位置的删除
列表的长度 len(列表)
使用 len(列表) 来求出 一个列表的长度
检索列表中的值
统计指定元素的个数 列表的count 函数
in 操作符
判断指定的值是否在列表中 使用 in 操作符
index函数
求出元素在列表中的位置 列表的index函数,第一次出现
列表的类型
列表的清空 clear 方法
列表的解析
格式:
[(元素m的函数操作项目) for m in 可循环体 m的筛选条件 ]
其中[]表示它是一个列表
其中元素m可以是单个元素,也可以是多个元素,元素m的函数操作项目表示了给该列表的元素
将进行什么样的操作,可循环体可以是列表,元组,字典的items()返回结果...
m的筛选条件表示什么样的元素将被筛选出来然后参与 m的函数操作项目
因此筛选条件可以用 if 语句表示
说明:
上面这个表达式的返回结果仍然是一个列表 (如果放在这个元组中就是一个生成器)
列表的解析会很大程度简化掉集合的操作,一行代码就可以给列表的每个元素进行同样的操作
如果换了是 Java,可能要写个循环然后处理每个元素才可以达到效果
例如: 我们要给一个列表的每个元素都扩大2倍之后,然后筛选出 偶数
多个元素的解析
列表本身就是迭代器,因此可以用于循环中
多重赋值技巧
python中将多个东西写在一起,就可能是一个 元组了,下一个笔记会介绍这个(这里有一个封包和拆包的操作概念)
因此可以使用列表等迭代器给多个写在一起的东西进行赋值操作
sort排序
数值的列表和字符串的列表可以使用 sort方法进行排序
ll.sort()
ll.sort(reverse=True) //逆序排序
但是要注意,只能是 纯数字和纯字符串的列表可以进行这样的排序
如果是数字和字符串混合的列表是不可以的
列表打印 print函数
可以直接使用 print()函数来打印列表的
因为列表是可迭代的序列因此使用 print 打印的时候本质上是使用了 迭代器的
关于迭代器后面会专门介绍
列表作为函数参数
虽然我们还没有接触到python的函数,但是 学过c和Java的肯定不会陌生
在c中我们传入了数组到函数中,那么数组的元素是可以被改变的
因为数组是传入了一个地址,引用的传递,不是传值的(数组地址本身可认为是传值的,地址不能改变)
列表作为引用被传递时候也一样,为了防止列表的元素被修改,我们可以使用 拷贝列表来做
copy 模块
import copy
然后 使用 copy.copy(列表)
来复制一个新的列表或者我们传入一个列表的全部切片也可以的
说的copy,肯定就有 浅拷贝和深拷贝了
copy模块的
copy()方法 和 deepcopy() 方法
浅拷贝和深拷贝的方法
*修饰
python允许在变量的左边 加上一个 * ,表示该变量是一个列表或者为可迭代的序列
使用这个操作就可以进行 部分解包的操作,这种操作对于 局部解包 很便利的
比如下面的 操作 ,
将列表 中的 0 赋给了 first
1 赋给了 second
剩下的赋给了 third 列表
当然使用 * 修饰一个列表表示将这个列表进行元素拆分
使用两个* 进行修饰的变量就成了一个字典,后面再字典里面介绍
zip函数
zip() 函数可以把 多个列表压缩成 一个 zip 对象, 就是相同位置的元素组成一起成为一个元组