此日记只为了方便自己复盘,如有涉及版权问题,归小甲鱼官方所有。
一、测试题
0. 下边的列表分片操作会打印什么内容?
>>> list1 = [1, 3, 2, 9, 7, 8]
>>> list1[2:5]
答0:[2,9,7]
1. 请问 list1[0] 和 list1[0:1] 一样吗?
答1:输出结果一样,但类型不一样。list1[0]是一个元素,list[0:1]是一个列表。
2. 如果你每次想从列表的末尾取出一个元素,并将这个元素插入到列表的最前边,你会怎么做?
答2:
list = [0,1,2,3,4,5,6]
for i in range(6):
list.insert(0,list.pop(6))
print(list)
3. 有些鱼油比较调皮,他说我想试试 list1[-3:-1] 会不会报错,怎么知道一试居然显示 [9, 7],这是怎么回事呢?
答3:因为python3有负数索引,正数索引[0:5]是从左往右计数,负数索引[-6:-1]是从右往左计数。如下图(图片来自https://www.jianshu.com/p/bb58a17b6814)
4. 在进行分片的时候,我们知道分片的开始和结束位置需要进行指定,但其实还有另外一个隐藏的设置:步长。
>>> list1[0:6:2]
[1, 2, 7]
那么依你推测,关于步长的知识点还有哪些(很多知识点都是通用的)?
答4:list1[0:6] 打印输出为[0,3,2,9,7,8],默认步长是1。
步长也分为正数步长和负数步长:
正数步长是从左开始到右边的结束下标,[0:6]中从0(包含0)开始到6(不包含6)结束,若结束下标为空则返回一个空。(例如:list[0:]打印输出 [0,3,2,9,7,8])
负数步长是从右开始到左边的结束下标,[-7:-1]中从-1(包含-1)开始到-7(不包含-7)结束,若结束下标为空则返回一个空。(例如:list[:-1] 打印输出 [0,3,2,9,7,8])
5. 课堂上小甲鱼说可以利用分片完成列表的拷贝 list2 = list1[:],那事实上可不可以直接写成 list2 = list1 更加简洁呢?
答5:
不可以,第一个是把list1[:]中的内存赋予list2列表,第二个是把自己list1列表直接赋予list2列表。
6.请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!
答6:list = ['xx','aa','bb','cc']
1、remove():是一个方法,将列表中具体名字的元数删除,(例如:list.remove('xx')打印输出['aa','bb','cc'])
2、dell():是一个语句,将列表中某个指定位置的元素删除,(例如:dell list(1)打印输出['xx','bb','cc'])也可以删除整个列表(dell list)
3、pop():将列表中取出某个元素,如果不输入位置,将默认取出最后一位。(例如:list.pop()打印输出'cc',也可以liist.pop(1)打印输出 'xx',同时也可以赋值给某个名字name = list.pop()打印输出'cc')
4、列表索引值是从0开始。
5、列表分片:list[0:2]打印输出['xx','aa'],list[:2]打印输出['xx','aa'],list[0:]打印输出 ['xx','aa','bb','cc'],
list[:]打印输出['xx','aa','bb','cc']。
二、动动手
0、自己动手试试看,并分析在这种情况下,向列表添加数据应当采用哪种方法比较好?
假定给以下列表:
member = [‘小甲鱼’, ‘黑夜’, ‘迷途’, ‘怡静’, ‘秋舞斜阳’]
要求将列表修改为:
member = [‘小甲鱼’, 88, ‘黑夜’, 90, ‘迷途’, 85, ‘怡静’, 90, ‘秋舞斜阳’, 88]
方法一:使用insert()和append()方法修改列表。
方法二:重新创建一个同名字的列表覆盖。
答0:
方法一:member.insert(1,'88');member.insert(1,'90');member.insert(1,'85');member.insert(1,'90');member.insert(1,'88');
方法二:member = [‘小甲鱼’, 88, ‘黑夜’, 90, ‘迷途’, 85, ‘怡静’, 90, ‘秋舞斜阳’, 88]
1、利用for循环打印上边member列表中的内容
答1:
member = [‘小甲鱼’, 88, ‘黑夜’, 90, ‘迷途’, 85, ‘怡静’, 90, ‘秋舞斜阳’, 88]
for i in member:
print(i)
2、上一题打印的样式不是很好,能不能修改以下代码打印成下图的样式呢?【请至少使用两种方法实现】
答2:
方法一:
member = ['小甲鱼', 88, '黑夜', 90, '迷途', 85, '怡静', 90, '秋舞斜阳', 88]
times = 0
while times < len(member):
print(member[times],member[times + 1])
times += 2
方法二:
member = ['小甲鱼', 88, '黑夜', 90, '迷途', 85, '怡静', 90, '秋舞斜阳', 88]
for i in range(len(member)):
if i % 2 ==0:
print(member[i],member[i + 1])