终于到了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中将多个东西写在一起,就可能是一个 元组了,下一个笔记会介绍这个
因此可以使用列表等迭代器给多个写在一起的东西进行赋值操作
sor排序
数值的列表和字符串的列表可以使用 sort方法进行排序
ll.sort()
ll.sort(reverse=True) //逆序排序
但是要注意,只能是 纯数字和纯字符串的列表可以进行这样的排序
如果是数字和字符串混合的列表是不可以的
列表打印 print函数
可以直接使用 print()函数来打印列表的
列表作为函数参数
虽然我们还没有接触到python的函数,但是 学过c和Java的肯定不会陌生
在c中我们传入了数组到函数中,那么数组的元素是可以被改变的
因为数组是传入了一个地址,引用的传递,不是传值的(数组地址本身可认为是传值的,地址不能改变)
列表作为引用被传递时候也一样,为了防止列表的元素被修改,我们可以使用 拷贝列表来做
copy 模块
import copy
然后 使用 copy.copy(列表)
来复制一个新的列表或者我们传入一个列表的全部切片也可以的
说的copy,肯定就有 浅拷贝和深拷贝了
copy模块的
copy()方法 和 deepcopy() 方法
浅拷贝和深拷贝的方法