- 注意,这道题跟上节课的那道题有点儿不同,回答完请上机实验或参考答案。
old = [1, 2, 3, 4, 5]
new = old
old = [6]
print(new)
[1,2,3,4,5]
1.请问如何将下边这个列表的’小甲鱼’修改为’小鱿鱼’?
list1 = [1, [1, 2, [‘小甲鱼’]], 3, 5, 8, 13, 18]
list1[1][2][0]="小鱿鱼"
- 要对一个列表进行顺序排序,请问使用什么方法?
sort()
3.要对一个列表进行逆序排序,请问使用什么方法?
>>> 列表名.sort(reverse=True)
>#或者
>>>> 列表名.sort() ##正序排序
>>> 列表名.reverse()##倒置
- 列表还有两个内置方法没给大家介绍,不过聪明的你应该可以自己摸索使用的门道吧:copy() 和 clear()
>>> list2
[1, 2, 3, 0, 2]
>>> list3=list2.copy()
>>> list3
[1, 2, 3, 0, 2]
>>> list3.clear()
>>> list3
[]
5. 你有听说过列表推导式或列表解析吗?
没听过?!没关系,我们现场来学习一下吧,看表达式:
>>> [i*i for i in range(10)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
居然分别打印了0到9各个数的平方,然后还放在列表里边了有木有?! 列表推导式(Listcomprehensions)也叫列表解析,灵感取自函数式编程语言 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):
for y in range(10):
if x%2 == 0:
if y%2 != 0:
list1.append((x, y))
6.活学活用:请使用列表推导式补充被小甲鱼不小心涂掉的部分
>>> list3 = [name + ':' + slogan[2:] for slogan in list1 for name in list2 if slogan[0] == name[0]]
首字母配对
列表的一些常用操作符
比较操作符
逻辑操作符not and or
连接操作符+
重复操作符*
成员关系操作符in not in
逻辑操作符:
list1 = [123,456]
list2 = [234,123]
list3 = [123,456]
(list1 < list2) and (list1 == list3)
#结果为True
连接运算符,+号不能添加新的字符串(元素),把多个列表对象合并在一起:
list1 = [123,456]
list2 = [234,123]
list4 = list1 + list2
list2 = list1+'123’错误,+的两端类型需一致,改为 list2 = [list1+‘123’]
为了避免一些问题,一班用append或者extend来连接
重复操作符(*):
list3 = [123,456]
list *= 3
成员关系操作符(in和not in只能判断一个层次的成员关系):
123 in list3
#结果返回True
list5 = [123,["小甲鱼","黑夜"],456]
"小甲鱼" in list5:
#结果返回False
"小甲鱼" in list5[1]:
#结果返回True
列表类型的内置函数
list2.count(123)
统计123出现的次数 ,计算它的参数在列表中出现的次数
list2.index(元素,start,end)
list2.index(123,3,7),返回它的参数在列表中位置,start 和 end 为可选参数
list2.reverse()
将整个列表原地翻转,把排最后的放到最前边,排最前的放到最后
list2.sort(func,key,reverse=True/False)默认reverse=False,从小到大
func和key参数为可选参数,用于设置排序的算法和关键字,默认是使用归并排序,它的默认值是sort(reserve=Flase)表示不颠倒顺序,把False改为True,列表就相当于从大到小排序
list2.copy()用于拷贝当前列表,当然也可以用分片的方法进行拷贝
list2=list1.copy
#
list2=list1[:]