零基础入门学习Python(11)-列表(3)

列表的一些常用操作符

比较操作符

逻辑操作符

连接操作符

重复操作符

当有多个元素时,默认是从第0个元素比较的
在这里插入图片描述
在这里插入图片描述

字符串比较的是每一个字符对应的ASCII码值的大小
在这里插入图片描述
什么是ASSII码?
是American Standard Code for Information Interchange缩写,美国标准信息交换代码是由美国国家标准学会(American National Standard Institute , ANSI )制定的,标准的单字节字符编码方案,用于基于文本的数据。

我们知道字符串可以用“+”做拼接,用“*”复制若干次,在列表中也可以实现
expend()扩展列表会显得更为规范,而不用“+”,因为加号有一些操作是违规的,因为连接操作符加号不能实现添加新元素的操作
在这里插入图片描述
在这里插入图片描述

成员关系操作符

in

not in

在这里插入图片描述
in 和 not in 只能判断一个层次的成员关系,同break和continue只影响一层的循环的道理是一样的
在这里插入图片描述
**对于列表中的列表中的值我们该如何访问呢???**用两个[]输入索引值即可
在这里插入图片描述

列表类型的内置函数

列表有多少小伙伴呢???用dir函数查询
在这里插入图片描述

count():此方法的作用是统计每个元素在列表中出现的次数

列表的内置方法要用点“.”表示范围
在这里插入图片描述

index():该方法可以限定查找的范围,即返回其参数在列表中的位置

  • 参数1:元素值
  • 参数2:范围起始
  • 参数3:范围终止
    在这里插入图片描述
    list3.index(123,1,4):返回列表list3中元素123在1-3索引值范围内第一次出现的位置

reverse():此方法的作用是使整个列表原地翻转

在这里插入图片描述

sort():此方法是对列表元素进行排序,默认从小到大排,

在这里插入图片描述
如果需要从大到小进行排序呢?

  • 方法1:先调用sort()方法从小到大排,再用reverse()方法原地翻转
  • 方法2:sort()方法其实有3个参数:
    【1】参数1:func参数用于设置排序的算法
    【2】参数2:key参数用于设置排序的关键字,默认使用归并排序
    【3】参数3:reverse参数默认是False,如果将reverse参数改为True的话就会从大到小排序
    在这里插入图片描述

关于分片拷贝的补充

使用分片slice可以创建列表的拷贝
Python的变量就像一个标签,就像一个名字一样,贴哪儿是哪儿,指哪儿打哪儿
list6 = [4,5,3,6,8,1]
list7 = list6[:]
list8 = list6
list7是list6的拷贝,而将list6赋值给list8,看起来效果是一样的,但对list6.sort()排序后list7依然是list6的拷贝,但list8随着list6顺序的变化而变化,所以不可以偷懒,要拷贝一个列表请用分片的方式
即直接用=就是多了一个指向的标签
在这里插入图片描述
在这里插入图片描述

Task

0. 注意,这道题跟上节课的那道题有点儿不同,回答完请上机实验或参考答案

>>> old = [1, 2, 3, 4, 5]
>>> new = old
>>> old = [6]
>>> print(new)

会打印[1,2,3,4,5],此处是赋值,new随着old的变化而变化,上节课是分片拷贝
在这里插入图片描述
1. 请问如何将下边这个列表的’小甲鱼’修改为’小鱿鱼’?

list1 = [1, [1, 2, ['小甲鱼']], 3, 5, 8, 13, 18]

用del删除,再用append添加

>>> list1 = [1, [1, 2, ['小甲鱼']], 3, 5, 8, 13, 18]
>>> del list1[1][2]
>>> list1[1].append('小鱿鱼')

在这里插入图片描述
小甲鱼的方法更简单:

list1 = [1, [1, 2, ['小甲鱼']], 3, 5, 8, 13, 18]
list1[1][2][0] = '小鱿鱼'

2.要对一个列表进行顺序排序,请问使用什么方法?
list1.sort()

3. 要对一个列表进行逆序排序,请问使用什么方法?
list1.sort(reverse=True)
或者;

>>> 列表名.sort()
>>> 列表名.reverse()

4. 列表还有两个内置方法没给大家介绍,不过聪明的你应该可以自己摸索使用的门道吧:copy() 和 clear()
copy()方法和使用切片拷贝是一样的
clear()方法用于清空列表的元素,但要注意,清空列表仍然存在,只是变成一个空列表

5. 你有听说过列表推导式或列表解析吗?

没听过?!没关系,我们现场来学习一下吧,看表达式:

>>> [i*i for i in range(10)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

分别打印了0到9各个数的平方,然后还放在列表里边了

列表推导式(List comprehensions)也叫列表解析,灵感取自函数式编程语言 Haskell。Ta 是一个非常有用和灵活的工具,可以用来动态的创建列表,语法如:

[有关A的表达式 for A in B]
例如

>>> list1 = [x**2 for x in range(10)]
>>> list1
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

相当于

list1 = []
for x in range(10):
    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]

还原:

>>> list1 = []
>>> for x in range(10):
	if x % 2 == 0:
		for y in range(10):
			if y % 2 != 0:
				list1.append((x,y))

在这里插入图片描述
6. 活学活用:请使用列表推导式补充被小甲鱼不小心涂掉的部分
在这里插入图片描述

list1 = ['1.Just do it','2.一切皆有可能','3.让编程改变世界','4.Impossible is Nothing']
list2 = ["4.阿迪达斯","2.李宁","3.鱼c工作室","1.耐克"]
for x in list1:
    for y in list2:
        if x[0] == y[0]:
            print(y + ":" + x[2:])
list1 = ['1.Just do it','2.一切皆有可能','3.让编程改变世界','4.Impossible is Nothing']
list2 = ["4.阿迪达斯","2.李宁","3.鱼c工作室","1.耐克"]
list3 = [y + ":" + x[2:] for x in list1 for y in list2 if x[0] == y[0]]
for each in list3:
    print(each)

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44520665/article/details/113028232