python列表类型和操作

列表类型

列表是包含0个或多个对象引用的有序序列,没有长度限制,可以自由增删元素。
列表类型属于序列类型,因此适用序列类型的12种操作和方法,同样可以使用正向递增序号和反向递减序号进行访问。
与同为序列类型的元组不同,列表的长度和内容都是可变的,元素类型也可以不同,使用起来非常灵活,那我们一起来看看列表究竟有多灵活吧


生成列表可以用[]把元素括起来用于生成列表,也可以用list函数将元组或字符串转化为列表,如果直接使用list()函数,括号里面没有参数的话会生成一个空的列表

str="你今天好棒鸭!"
tuple="你","今天","好棒","鸭"
#生成列表的三种方法
ls1=[1,2,3,"1","2","3"]#用[]生成列表
ls2=list()#用list空参生成空列表
ls3=list(str)#将字符串当作参数,将字符串中的每个字符作为一个元素生成新的列表
ls4=list(tuple)#将元组当作参数,将元组中的每个元素作为新列表的元素
print("ls1的类型为:{},其内容为{}".format(type(ls1),ls1))
print("ls2的类型为:{},其内容为{}".format(type(ls2),ls2))
print("ls3的类型为:{},其内容为{}".format(type(ls3),ls3))
print("ls4的类型为:{},其内容为{}".format(type(ls4),ls4))

输出结果如下:
python列表类型和操作_第1张图片

——————————————我是分割线—————————————————

我们看下面一个例子,定义一个ls1列表并赋值为ls1=[1,2,3,4]。然后我将这个列表赋值给另一个列表ls2,下面我把ls1中的第0个元素改为9。我没有动ls2中的第0个元素,为什么输出ls2的结果是ls2中的第0号元素也改变了呢?

ls1=[1,2,3,4]
ls2=ls1
ls2[0]=9
print(ls1)

结果是
在这里插入图片描述

要解答这个问题我们需要知道:列表必须通过显式的数据赋值才能生成一个列表对象,简单的将一个列表赋值给另一个列表不会生成新的列表对象。这句话是什么意思呢?其实很好理解,跟我来想一个情景。
你去文具店买笔,拿了一个大的布袋子(布袋子比塑料袋更环保哟,大家购物最好随身携带布袋子,保护环境人人有责)你买了一个文具盒、一个橡皮、一支钢笔、两只水笔放在了布袋子里。(此时布袋子相当于列表,里面的文具盒、橡皮、钢笔、水笔相当于你赋值的元素。现在已经生成了一个布袋子列表。)你走出超市遇见了你的好朋友,此时你说你想去厕所,让好朋友帮忙拿一下布袋子,你把布袋子交给你的好朋友。(相当于上述的把列表ls1赋值给ls2。)你只是把你的布袋子交给好朋友看管,好朋友自己并没有布袋子。好朋友很好奇布袋子里装的是什么,打开看看发现你的钢笔很好看,他把你的钢笔拿出来,却不小心把把钢笔的笔帽弄丢了,找不到的那种弄丢,此时你上完厕所回来了,朋友把弄丢笔帽的钢笔放进了布袋子里。(这一步相当于更改ls2里的某一个元素)你们聊了一会朋友把布袋子还给了你,你拿着布袋子回到了家,到家打开布袋子发现钢笔的笔帽丢了(相当于输出ls1发现ls1里的元素改变了。)
其实讲到这你也已经明白了,ls1里的元素之所以改变是因为,ls2赋值给ls1时,ls1只是拿到了ls2的管理权,ls2并没有属于自己的对象,此时ls2和ls1都指向了同一个对象(你和你的同学共用你的布袋子),因此ls2改变元素时,实际上改变的是ls1里的元素。因为把ls1赋值给ls2只是把ls1对象的管理权交给了ls2,ls2并没有属于自己的对象,也不知道我讲明白了没有,开动你聪明的小脑袋瓜想一想叭。

这告诉我们列表元素只有显式赋值才可以生成对应的列表对象。


列表类型的操作

这里给出列表类型独有的14个函数和方法
❶ls[i]=x————>:替换列表ls第i个元素为x
❷ls[i:j]=lt————>:用列表lt替换列表ls中的i到j号元素,不包括第j号元素(下同)
❸ls[i:j:k]————>:用列表lt替换列表ls中的i到j号以k为步长的元素
❹del ls[i:j]————>:删除列表第i到j号元素,等价于ls[i:j]=[]
❺del ls[i:j:k]————>:删除列表ls中的i到j号以k为步长的元素
❻ls+=lt或ls.extend(lt)————>:将列表lt中的元素增加到列表ls中
❼ls*=n————>:更新列表ls,ls中的元素重复n次
❽ls.append(x)————>:在列表ls最后增加一个元素x
❾ls.clear()————>:删除ls中所有元素
❿ls.copy()————>:生成一个新列表,复制ls中所有元素
⓫ls.insert(i,x)————>:在列表ls的第i位置增加元素x
⓬ls.pop(i)————>:将列表中的第i个元素取出并删除该元素
⓭ls.remove(x)————>:将列表中出现的第一个元素x删除
⓮ls.reverse()————>:将列表ls中的元素反转
话不多说上代码:

ls=[1,2,3,4,5]
lt=[9,8,7]
ls[0]='z'#替换第0个元素
print("替换后的列表为:{}".format(ls))
ls[0:2]=lt#用列表lt替换ls特定片段
print("替换后的列表为:{}".format(ls))
del ls[0:2]#删除ls特定片段
print("删除某元素后的列表为:{}".format(ls))
ls+=lt#用lt列表更新ls列表
print("增加列表lt{}后的列表为:{}".format(lt,ls))
ls*=2#重复列表元素并更新列表
print("元素重复两次后的列表为:{}".format(ls))
ls.append('z')
print("增加元素z后的列表为:{}".format(ls))
ls1=ls.copy()
print("新生成的列表为:{}".format(ls1))
ls.insert(0,'m')
print("增加元素后的列表为:{}".format(ls))
ls.pop(0)
print("删除第0个元素后的列表为:{}".format(ls))
ls.remove(7)
print("删除第一个7后的列表为:{}".format(ls))
ls.reverse()
print("反转后的列表为:{}".format(ls))
ls.clear()
print("删除所有元素后的列表为:{}".format(ls))

看我们的输出结果有一大堆呢

python列表类型和操作_第2张图片

其中特别要注意的是用一个列表改变另一个列表的值的时候不要求两个列表的长度一样,但要遵循"多增少减的原则",看图就好

test=[1,2,3,4,5]
demo1=[9,8,7]
test[0:2]=demo1
print("替换后的列表为:{}".format(test))
'''
这里,test[0:2]包含两个元素,但是demo1却有三个元素
因此替换的时候会把demo1里的三个元素均替换过去即:多增
'''
demo2=[100]
test[0:2]=demo2
print("替换后的列表为:{}".format(test))
'''
这里替换时,test[0:2]包含两个元素,demo2中包含一个元素,
因此替换时demo中的元素会替换test中的0和1号元素,即为:少减
'''

输出结果
在这里插入图片描述


列表类型运用非常广泛主要得益于它的长度可以变换,元素可以变化使用起来非常的方便,大家可以多加练习,好了,今天就到这里了,我们下回见咯。٩(❛ัᴗ❛ั⁎)

你可能感兴趣的:(python)