##从列表中获取元素
※跟数组一样,我们可以通过元素的索引值(index)从列表获取单个元素,注意,列表索引值是从 0 开始的。
##从列表删除元素
※remove()
(并不需要知道要删除元素在列表的哪个位置,只需要知道它存在里边接可以了,)
※del
(他不是一个列表的方法,是一个语句,可以删列表中的元素,也可以删掉整个列表)
※pop()
(python的列表实际上是用栈这种数据结构进行存储的,因此又pop弹出这么一个方法,它是从列表中取出最后一个元素并返回给你,pop方法也可以加上一个参数,)
##列表分片(Slice)
※利用索引值,每次我们可以从列表获取一个元素,但是我们总是贪心的,如果一次性需要获取多个元素,有没有办法实现呢?利用列表分片,我们可以简单的实现这个要求。
(左边的索引值表示需要开始的位置开始的下标,右边的是结束的位置,右边是不包含的,3-1=2,那么就会分片分出两个元素,利用列表分片我们可以得到原来列表的拷贝,原列表并没有发生任何的改变,分片还可以简写,从第一个开始,就没必要写一个0)
(如果你想对列表做出某些修改,但是同时保持原来列表,那么直接使用[:]就可以获得原列表的拷贝)
##列表的一些常用操作符
※比较操作符
(是从第0个元素开始比较的,只要有一个pk赢了,就算整个列表赢了,不用考虑后边的元素,跟字符串比较是同一个道理,)
※逻辑操作符
※连接操作符
(列表和字符串有很大的相关性的吗,字符串可以用加号来进行拼接,用乘号来复制若干次,在列表身上也可以,拼接和字符串的拼接有相似性的,但不是完全一样,其实也就是相当于之前学过的extend方法,extend方拓展列表会显得语法更为规范,不要随便用+去拓展列,因为使用+有一些操作是违规的,必须要指出的是连接操作符+号不能实现拼接新元素的操作,加号两边的类型必须一致)
※重复操作符
※成员关系操作符
(访问列表中的列表的值)
##列表的小伙伴们
(就是列表的BIF内置函数)
※count:返回一个参数在列表中的出现次数
※index:会返回参数在列表中的位置
(这三个参数就是123这个元素从索引为3开始数,数到7,123的位置是在第4的位置)
※reverse:逆袭,让整个列表原地翻转,把排在最后的排到最前边,最前边的放到最后,倒数第二放在第二。
※sort:用指定的方式对列表的成员进行排序,默认也不需要的参数,默认是从小到大排序
(有参数的情况就是第一个参数func指定排序的算法,第二个参数是key就是跟这个算法搭配的关键字,前面两个都是默认的,第三个参数reverse,他默认是等于false,就是没有逆序的,改为true就可以实现从大到小排序列表了)
##关于分片“拷贝”概念的补充
(使用分片可以创建列表的一个拷贝,如上的list7,那么也可以直接用 赋值号给list8赋值,如上。看上去一样,但实际上,再次对列表6进行修改,变成升序,看下list7,它还是保持逆序的状态,因为list6是把整个列表拷贝过去,也就是说现在有两份,一份在list6,另一份是在list7,但是list8跟着变了,墙头草)
(上图的意思就是在为一个固定的东西指定名字的话,实际上就是添加一个新的标签而已,还是指向原来的列表的,但是是使用分片的方法进行拷贝,他会从本来的列表内存中拷贝出同一份列表,他不怕浪费地方,就是实实在在的拷贝了,赋值号完成的就只是多了一个指向原列表的标签,原列表改变了,这个标签指向的是原列表,所以也会变,所以拷贝用分片)
##温故知新之习题
1. 请问如何将下边这个列表的’小甲鱼’修改为’小鱿鱼’?
1. list1 = [1, [1, 2, [' 小甲鱼 ']], 3, 5, 8, 13, 18]
答:(list1[1][2][0] = ’ 小鱿鱼 ’ )
2. 要对一个列表进行顺序排序,请问使用什么方法?
答:
1. >>> 列表名 .sort()
3. 要对一个列表进行逆序排序,请问使用什么方法?
答:法一
1. >>> 列表名 .sort()
2. >>> 列表名 .reverse()
答:法二
1. >>> 列表名 .sort(reverse=True)
4. 列表还有两个内置方法没给大家介绍,不过聪明的你应该可以自己摸索使用的门道吧: copy() 和 clear()
答:copy() 方法跟使用切片拷贝是一样的:
1. >>> list2 = list1.copy()
2. >>> list2
3. [1, [1, 2, [' 小甲鱼 ']], 3, 5, 8, 13, 18]
答:clear() 方法用于清空列表的元素,但要注意,清空完后列表仍然还在哦,只是变成一个空列表
1. >>> list2.clear()
2. >>> list2
3. []
5. 你有听说过列表推导式或列表解析吗?
没听过?!没关系,我们现场来学习一下吧,看表达式:
1.>>> [ i*i for i in range(10) ]
你觉得会打印什么内容?
1.>>> [i*i for i in range(10)]
2.[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
居然分别打印了0到9各个数的平方,然后还放在列表里边了有木有?!
列表推导式(List comprehensions)也叫列表解析,灵感取自函数式编程语言 Haskell。Ta 是一个非常有用和灵活的工具,可以用来动态的创建列表,语法如:
[有关A的表达式 for A in B]
例如:
1.>>> list1 = [x**2 for x in range(10)]
2.>>> list1
3.[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
相当于
1.list1 = []
2.for x in range(10):
3. list1.append(x**2)
问题:请先在 IDLE 中获得下边列表的结果,并按照上方例子把列表推导式还原出来。
>>> list1 = [(x, y) for x in range(10) for y in range(10) if x%2==0 if y%2!=0]
答:
1. list1 = []
2. for x in ragne(10):
3. for y in range(10):
4. if x%2 == 0:
5. if y%2 != 0:
6. list1.append((x, y))
6. 活学活用:请使用列表推导式补充被小甲鱼不小心涂掉的部分
1. >>> list3 = [name + ' :' + slogan[2:] for slogan in list1 for name in list2 if slogan[0]
== name[0]]
来源:CSDN
作者:√5
链接:https://blog.csdn.net/w15977858408/article/details/104048799