列表

1.切片操作

列表的基本正序和倒序在python中切片操作的详细用法 - wakappxc - 博客园 (cnblogs.com)中有解释

 

2.一些方法

append方法:

a=["w","s"]
a.append("d")
print(a)
#输出  ['w', 's', 'd']

extend方法:

extend方法的参数必须是一个可迭代对象,新的内容是追加到原列表最后一个元素的后面

a=["w","s"]
a.append("d")
print(a)
a.extend(["sadas","xcxcx"])
print(a)
#输出  ['w', 's', 'd']
# ['w', 's', 'd', 'sadas', 'xcxcx']

当然我们也可以用切片操作实现append和extend方法

a=["w","s"]
a[len(a):]=[5,"2333"] print(a)
#['w', 's', 5, '2333']

注意代码中的len(a)也就是列表a最后一个元素之后的元素开始进行添加 不然的话会导致覆盖

insert方法:

在任意位置插入元素

a=["w","s"]
a.insert(0,"dsadfas")
print(a)
#['dsadfas', 'w', 's']

insert中第一个参数代表的是要插入的位置 ,也就是索引。第二个参数代表的要插入的内容

remove方法:

删除列表中的元素

ATTENTION:

1.如果列表中存在多个匹配的元素,那么它只会删除第一个

2.如果指定的元素不存在,那么程序就会报错

pop、clear方法:

直接弹出所指索引的元素

a.pop(索引)
a.clear()#列表全部清零

替换、sort、reverse:

替换的话就直接可以列表中的某个值直接修改,或者说是通过切片操作进行一系列的替换

a=["a","b","c","d"]
a[1:]=["c","c","c","c"]
print(a)
#['a', 'c', 'c', 'c', 'c']

a.sort() 对列表中的值进行排序     

a.reverse()对列表中按索引进行反向排序

而在sort方法里直接可以加reverse

a.sort(reverse=True)

count、index、copy:

利用count进行查找

a=['a', 'c', 'c', 'c', 'c']
print(a.count("c"))
#4

利用index查找值所在的索引(位置)

注意它只会输出找到的第一个

index(x,start,end)
#查找的内容  开始和结束的位置
a=['a', 'c', 'c', 'c', 'c']
print(a.index('c',1,2))
#1
a=[1,1,1]
b=a.copy()
print(b)
#[1, 1, 1]

但是我们也可以用切片的操作进行(切片的强大功能)

a=[1,1,1]
b=a[:]
print(b)

 

3.列表的加法和减法

加法和乘法:

 嵌套列表(nested list):

 也就是所谓的二维列表

访问嵌套列表(access nested list):

 

 不能采用这中方法  会产生错误(这个时候我们就需要引入一个新的运算符

is(is operator):

is运算符也称作为同一性运算符,它是用于检验两个变量是否指向同一个对象的一个运算符

 由于字符串都是一样的所以两个变量都是指向同一个字符串所以x 和 y是具有同一性

相比于字符串,列表则是可变的,因此python还是需要为他们开辟两个不同的位置

 

 

 在创建一维列表之后,在每个索引里又创建列表 就变成了二维列表

4.变量不是盒子 

变量不是盒子:

一个变量赋值给另外一个变量其实就是引用

 上述中对x进行修改的同时y也进行了修改可以验证上述逻辑。如果我们想得到两个独立的列表我们需要用到拷贝 

浅拷贝和深拷贝(shallow and deep copy):

浅拷贝无非就是调用列表的copy方法,或者使用切片的语法来实现,因为copy拷贝的是整个列表对象,不仅仅是变量的引用,

那利用切片的语法操作也可以实现拷贝的效果

 这两种方式都称为浅拷贝

 而在嵌套列表中这种就会失效,如上图浅拷贝是拷贝的外层列表,此时里层就会失效了

而要使用深拷贝需要借助copy模块

 如上图,虽然我们引用了copy模块,但是copy模块也会有浅拷贝(copy)和深拷贝(deepcopy)的区别

而deepcopy函数将原对象拷贝的同时,也将对象中所有引用的子对象一并进行拷贝,这就是深拷贝。

这些是copy模块里的函数区别于原来的方法。(在没有学到类之前当成一个东西看就好了)

5.列表推导式(list comprehension expression)

我们可以通过这种for循环的方式来达到目的,但是是否会有更好的方法呢?是的这就是我们要说的列表推导式

这就是列表推导式了

“FishC”中每一个字符*2然后依次进行输出

如果想将每一个字符都转换成对应的Unicode编码并保存为列表,我们可以这样写:

ord()这个内置函数的作用就是将单个字符串转换为对应的编码

举证二维列表每个列表的第二个元素

 

举证对角线元素,matrix[i][i]

 综上,循环是通过迭代来逐个修改原列表中的元素,而列表推导式则是直接创建一个新的列表,然后再赋值为原来的这个变量名

把首字符为'F'的取出来,二维的列表推导式还可以进行嵌套来更加复杂

这样就把它一个一个都输出来了

这里我们接着上面把列表清空之后用append方法一个一个都可以直接添加进去

我们可以发现是一模一样的结果,我们可以发现外层循环是放在前面的,嵌套内层的循环是放在后面的

我们可以验证一下确实如此

我们设置的_变量代表的是临时的,无关紧要的变量

 但是其实终极语法其实是这个样子的

 

posted @ 2023-12-03 00:47  wakappxc  阅读(18)  评论(0编辑  收藏  举报