列表的一些常用操作符
比较操作符
逻辑操作符
连接操作符
重复操作符
当有多个元素时,默认是从第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)