--------------Class notes------------------
1.当列表包含多个元素的时候,默认是从第一个元素开始比较,只要第一个PK赢了,就算整个列表赢了。
2.字符串比较的是第一个字符对应的ASCII码值的大小。
3.sort 的默认值是sort(reverse = False),表示不颠倒排序。
--------------homework------------------
0.注意,这道题跟上节课的那道题有点儿不同,回答完请上机实验或参考答案。
>>> old = [1, 2, 3, 4, 5]
>>> new = old
>>> old = [6]
>>> print(new)
如果不上机操作,你觉得会打印什么内容?
answer:[1,2,3,4,5]
e.g.:
>>> B = [2, 2, 3, 3, 4, 4, 5, 5]
>>> A = B
>>> A
[2, 2, 3, 3, 4, 4, 5, 5]
>>> C = B[:]
>>> C
[2, 2, 3, 3, 4, 4, 5, 5]
>>> B.sort(reverse = True)
>>> B
[5, 5, 4, 4, 3, 3, 2, 2]
>>> A
[5, 5, 4, 4, 3, 3, 2, 2]
>>> C
[2, 2, 3, 3, 4, 4, 5, 5]
>>> B = [2, 2, 3, 3, 4, 4, 5, 5]
>>> A = B
>>> A
[2, 2, 3, 3, 4, 4, 5, 5]
>>> C = B[:]
>>> C
[2, 2, 3, 3, 4, 4, 5, 5]
>>> B = [6]
>>> B
[6]
>>> A
[2, 2, 3, 3, 4, 4, 5, 5]
>>> C
[2, 2, 3, 3, 4, 4, 5, 5]
第一个A指向了B的内存地址;第二个B重新开辟了一个内存地址
1.请问如何将下边这个列表的’小甲鱼’修改为’小鱿鱼’?
list1 = [1, [1, 2, ['小甲鱼']], 3, 5, 8, 13, 18]
answer:list1[1][2][0] = '小鱿鱼'
2.要对一个列表进行顺序排序,请问使用什么方法?
answer:使用内置函数sort()
3.要对一个列表进行逆序排序,请问使用什么方法?
answer:sort(reverse = True)
4.列表还有两个内置方法没给大家介绍,不过聪明的你应该可以自己摸索使用的门道吧:copy() 和 clear()
answer:
copy()方法跟使用切片拷贝方法是一样的:
>>> list1 = [1, [1, 2, ['小甲鱼']], 3, 5, 8, 13, 18]
>>> list2 = list1.copy()
>>> list2
[1, [1, 2, ['小甲鱼']], 3, 5, 8, 13, 18]
clear()方法用于清空列表的元素,但要注意,清空完后列表任然还在,只是变成一个空列表。
>>> list2.clear()
>>> list2
[]
5.问题:请先在 IDLE 中获得下边列表的结果,并按照上方例子把列表推导式还原出来。
>>> list1 = [(x, y) for x in range(10) for y in range(10) if x%2==0 if y%2!=0]
result:
>>> list1 = [(x, y) for x in range(10) for y in range(10) if x%2==0 if y%2!=0]
>>> list1
[(0, 1), (0, 3), (0, 5), (0, 7), (0, 9), (2, 1), (2, 3), (2, 5), (2, 7), (2, 9), (4, 1), (4, 3), (4, 5), (4, 7), (4, 9), (6, 1), (6, 3), (6, 5), (6, 7), (6, 9), (8, 1), (8, 3), (8, 5), (8, 7), (8, 9)]
CODE:
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]]
7.请写下本节课学到的内容:
列表推导式:list1 = [(x, y) for x in range(10) for y in range(10) if x%2==0 if y%2!=0]