列表:一个打了激素的数组2、3+习题复习

不问归期 提交于 2020-01-21 01:08:05

##从列表中获取元素
           ※跟数组一样,我们可以通过元素的索引值(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]]
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!