第011讲:列表:一个打了激素的数组2

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第011讲:列表:一个打了激素的数组2相关的知识,希望对你有一定的参考价值。

第011讲:列表:一个打了激素的数组2


测试题:

0. 下边的列表分片操作会打印什么内容?

>>> list1 = [1,3,2,9,7,8]
>>> list1[2:5]

2,9,7 # 从0开始,5不算

1. 请问 list1[0] 和 list1[0:1] 一样吗?

\'\'\'
不一样
list1[0]返回的是列表中元素的值
list1[0:1]返回的是只有0:1元素值的列表
\'\'\'

2. 如果你每次想从列表的末尾取出一个元素,并将这个元素插入到列表的最前边,你会怎么做?

# 元素交换
mumber = [1,2,3,4,5]
mumber_a = mumber[0]
mumber[0] = mumber[-1]
mumber[4] = mumber_a

# pop() 方法
mumber = [1,2,3,4,5]
mumber_a = mumber.pop()
mumber.insert(0,mumber_a)

3. 有些鱼油比较调皮,他说我想试试 list1[-3:-1] 会不会报错,怎么知道一试居然显示 [9, 7],这是怎么回事呢?

如果列表使用负数,则必须从右向左数
如:

>>> mumber = [1,2,3,4,5,6]
>>> mumber[-4:-1]
[3,4,5]
# 这里,-1的位置是5,-4的位置是3,如果要-4开始到末尾数据,则:
>>> mumber[-4:] # 留空就行
[3,4,5,6]

4. 在进行分片的时候,我们知道分片的开始和结束位置需要进行指定,但其实还有另外一个隐藏的设置:步长。

在普通的分片操作中,步长默认设置为1,表示逐个遍历元素。其实我们可以人为调整步长以达到不可告人的秘密。

>>> list1[0:6:2]
[1, 2, 7]

那么依你推测,关于步长的知识点还有哪些(很多知识点都是通用的)?

# 上面的代码改为
>>> list1[::2]
[1,2,7]
# 也是有效的
# 步长不能为0,步长为0,程序没法执行
# 步长可以为负数,步长为负数,则改变方向,重尾部开始倒叙
>>> list1 = [1,2,3,4,5]
>>> list1[::-1]
[5,4,3,2,1]

5. 课堂上小甲鱼说可以利用分片完成列表的拷贝 list2 = list1[:],那事实上可不可以直接写成 list2 = list1 更加简洁呢?

# 不可以
>>> list[1,2,3,4,5,6]
>>> list1 = list
>>> list.remove(2)
>>> print(list,\'\\n\',list1)
[1,3,4,5,6]
[1,3,4,5,6]

>>> list1 = list[:]
>>> list.remove(2)
print(list,\'\\n\',list1)
[1,3,4,5,6]
[1,2,3,4,5,6]
# 由此可见,用分片拷贝的新列表与原列表再无任何关系
# 而直接变量赋值的方式则会随原列表的改变而改变

以上是关于第011讲:列表:一个打了激素的数组2的主要内容,如果未能解决你的问题,请参考以下文章

第 011讲:一个打了激素的数组[02]

[Python]小甲鱼Python视频第011课(列表:一个打了激素的数组2)课后题及参考解答

011:列表:一个打了激素的数组2

小甲鱼第010讲:列表:一个打了激素的数组1 | 课后测试题及答案

[Python]小甲鱼Python视频第012课(列表:一个打了激素的数组3)课后题及参考解答

010列表:一个打了激素的数组