|
文章目录概念创建列表访问下标通过下标来修改列表元素获取列表长度下标可以写成负数切片操作省略后边界省略前边界省略前后边界带有步长的切片遍历列表元素使用for循环使用for循环访问下标的方式使用while循环新增元素在末尾新增在任意位置新增查找元素判定元素是否存在判定元素的位置删除元素删除列表末尾元素删除任意位置元素按照值进行删除列表拼接使用“`+`”拼接使用`extend`进行拼接使用“`+=`”拼接关于元组创建元组创建元组时指定初始值元组中的元素可以使任意类型通过下标进行访问切片遍历元组查找元素拼接元组为什么要有元组概念变量就是内存空间,用来表示/存储数据如果表示的数据少,直接定义几个变量就行了num1num2num3123但有时候要表示的数据比较多Python中,列表和元组就是一种可以用一个变量来表示很多数据的机制(类似其他语言中的数组)列表和元组,大部分功能都是差不多的,但是有一个功能有非常明显的区别:列表是可变的,创建好了之后,随时可以改元组是不可变的,创建好了之后改不了,若想改,只能丢弃旧的,再创建一个新的列表就是买散装辣条,装好了袋子之后,随时可以把袋子打开,再往里多加辣条或者拿出去一些辣条元组就是买包装辣条,厂家生产好了辣条之后,一包就是固定的这么多,不能变动了创建列表直接使用字面值来创建a=[1,2,3,4]print(type(a))print(a)"""运行结果[1,2,3,4]"""123456789[]就代表一个空的列表可以在[]中指定列表的初始值,使用list()来创建b=list()print(type(b))"""运行结果"""1234567C++/Java中要求一个数组里只能存放相同的变量,但在Python中没有类型要求a=[1,'hello',True,[1,2,3]]print(a)"""运行结果[1,'hello',True,[1,2,3]]"""1234567访问下标通过下标访问的方式,来获取列表中的元素把[]放到一个列表变量的后面,同时[]中写上一个整数,此时他就是下标访问运算符。[]中间写的这个证书,就称为“下标”或者“索引”a=[1,2,3,4]print(a[2])"""运行结果3"""1234567Python中的下标,是从0开始计数的通过下标来修改列表元素a=[1,2,3,4]a[2]=100print(a)"""运行结果[1,2,100,4]"""12345678这是列表的功能,如果是元组的话,就只能读,不能改由于下标是从0开始计算的,那么对于列表来说,下标的有效范围是0~长度-1。当我们的下标超出有效范围的时候,尝试访问就会报错`获取列表长度a=[1,2,3,4]print(len(a))"""运行结果4"""1234567len可以穿字符串、列表、元组、字典、自定义得嘞…(动态类型)下标可以写成负数a=[1,2,3,4]print(a[lem(a)-1])print(a[-1])"""运行结果33"""123456789-1就等价与len(a)-1切片操作切片操作是一个比较高效的操作,进行切片的时候,只是取出原有列表中的一个部分,并不涉及到“数据的拷贝”。假设有一个很大的列表进行切片,切片的范围也很大,即使如此,切片操作仍然非常高效切片操作中,[]中有两个数字,表示了一段区间a=[1,2,3,4]print(a[1:3])"""运行结果[2,3]"""12345671表示开始区间的下标;3表示结束区间的下标包含1,不包含3,[1,3)省略后边界a=[1,2,3,4]print(a[1:])"""运行结果[2,3,4]"""1234567从a[1]开始,一直读取到整个列表结束省略前边界a=[1,2,3,4]print(a[:2])"""运行结果[1,2]"""1234567从列表的a[0]开始读,一直读到结束的后边界省略前后边界a=[1,2,3,4]print(a[:])"""运行结果[1,2,3,4]"""1234567省略前后边界就是打印整个列表带有步长的切片切片操作,还可以指定“步长”,rangea=[1,2,3,4,5,6,7,8]print(a[::1])print(a[::2])"""运行结果[1,2,3,4,5,6,7,8][1,3,5,7]"""123456789多加一个:,再多加一个数字,这个数字就是步长这里表示:每隔两个元素,取一个列表元素步长也可以设置为负数,当步长为负数时,意思是从后往前来取元素遍历列表元素“遍历”指的是把元素一个一个的取出来,再分别进行处理使用for循环a=[1,2,3,4,5]forelemina:print(elem)123在这个遍历过程中,循环里面的逻辑不一定是打印,还可以是别的elem代表列表里的每个元素forin后面的这个东西,要求是一个可迭代对象列表就是一个可迭代对象使用for循环访问下标的方式a=[1,2,3,4,5]forirange(0,len(a)): print(a[i])123相比于上面的方式,这里不仅可以打印,还可以进行修改使用while循环a=[1,2,3,4,5]i=0whilei"""12345678910创建元组时指定初始值a=(1,2,3,4)print(a)"""运行结果(1,2,3,4)"""1234567元组中的元素可以使任意类型a=(1,2,'hello',True,[])print(a)"""运行结果(1,2,'hello',True,[])"""1234567通过下标进行访问a=(1,2,3,4,5)print(a[1])print(a[-1])"""运行结果25"""123456789下标也是从0开始,len-1结束当访问的下标超过len-1,会报错切片通过切片来获取元组中的一个部分a=(1,2,3,4)print(a[1:3])12这里的操作和列表是一摸一样的遍历元组a=(1,2,3,4)forelemina: print(elem)123和前面列表操作一样查找元素a=(1,2,3,4,5)print(3ina)print(22ina)123和列表的操作一样拼接元组a=(1,2,3)b=(4,5,6)print(a+b)123和列表的操作一样为什么要有元组在协同开发的时候,一个程序员A实现一些功能,提供给程序员B使用。A写好一些函数,让B去调用期间函数肯定要传参B在传参的时候就可能会纠结一个问题“我把我的参数传过去了,A的函数里面是否会把我的参数的内容给改了呢”,如果使用元组作为参数,就可以避免这样的纠结元组不可修改==>不可变对象不可变对象,是可以哈希的
|
|