Python练习题详解之数组(小白友好)

Python练习题详解之数组(小白友好)

你好!欢迎来到Python练习题详解系列。为了让小白(也就是我本人)更好的理解代码,打好编程基础,我决定仔细地解说一些练习题。欢迎观看!奥利给!

在开始练习题详解前,我们来复习一下,下列题目会涉及到的概念:


-创建列表

如果把数组比喻成集装箱,那么Python 的列表就是一个大仓库,Ta 可以存放我们已经学习过的任何数据类型。包括,整数,浮点数,字符串,对象。

member = [ 1, 3, 4, '哈哈哈,我是文字' ,5 ,6 ,7 ]

列表一定是从0开始数的

比如:member[5] =  '哈哈哈,我是文字' 


-添加元素

.append()添加到列表尾部 ,注意:只能增加一个参数

Python练习题详解之数组(小白友好)

.extend()Extend 里面要增加数组!!注意:要用中括号

Python练习题详解之数组(小白友好)

.insert()可以插入因素, (位置,元素)注意:0 代表第一位

Python练习题详解之数组(小白友好)


-调换位置:

创建一个temp临时变量,就能偷梁换柱啦~代码如下

temp = member [0]

member [0] = member[1]

member[1] = temp


-列表分片 (slice)

可以一次性获取多个元素,包头不包尾( [1:5] 的意思就是,从第二个到第四个,因为包1不包5)

Python练习题详解之数组(小白友好)

[:]还是一个copy,copy后的列表不受原列表的改变而改变。

Python练习题详解之数组(小白友好)

在[x:y:z]中,x代表开始的位置,y代表结束的位置,z代表step,跟上一篇文章讲到的range()是一样的。

举个栗子:

Python练习题详解之数组(小白友好)


-删除元素

.remove()  会删除掉一个括号里的参数

Python练习题详解之数组(小白友好)

del语句,因为它不是一个方法,所以不用括号

Python练习题详解之数组(小白友好)

.pop()  从列表中取出最后一个元素

Python练习题详解之数组(小白友好)

pop的括号里也可以写一个你想赶出来的元素的位置

Python练习题详解之数组(小白友好)


-算术运算

加法 (不建议使用,还是老实用insert,append,extend比较好)

Python练习题详解之数组(小白友好)

乘法

Python练习题详解之数组(小白友好)

乘法赋值

Python练习题详解之数组(小白友好)


成员操作符

xx in xx,如果有,返回True

Python练习题详解之数组(小白友好)

如果list里面有list呢?成员操作符只能判断一层,所以应该:

Python练习题详解之数组(小白友好)

那么如何让系统返回‘雪雪子’呢?

Python练习题详解之数组(小白友好)


列表的重要小伙伴们

.count () 数一数某元素在列表里一共有多少个

Python练习题详解之数组(小白友好)

.index() 让系统返回某元素在第几位

Python练习题详解之数组(小白友好)

.reverse() 将列表整个调转

Python练习题详解之数组(小白友好)

.sort() 排队 从小到大

Python练习题详解之数组(小白友好)

.sort(reverse=True)从大到小,  注意,true一定要大写T

Python练习题详解之数组(小白友好)

结束啦!!!!兔子都累了QAQ 我去喝杯水,然后我们来看题!


题目1

观察以下代码,推导出能写出以下结果的代码

Python练习题详解之数组(小白友好)

思路:

我们仔细观察一下这个代码,我们首先确定它是一个数组,数组里有很多坐标系。那么这些坐标系有什么关系呢?仔细一看,y 在是 1 3 5 7 9 中循环,而x 在 0 2 4 6 8 中循环,这让我马上想起了上一篇文章提到的for循环里面再套一个for循环。由于y一直在变,x等y循环完 1 3 5 7 9才变,所以,for x 应该先出场,然后再到for y。

另外,奇数和偶数的判断我们已经很熟悉了,就是除以2的商等不等于0. 如果x 和 y满足偶数和奇数的条件,那我们就往列表里面append一个坐标(x,y)。

答案:

Python练习题详解之数组(小白友好)


题目2

如图,list 3 应该写什么,才能让打印出来是图二的样子呢?

Python练习题详解之数组(小白友好)

Python练习题详解之数组(小白友好)

在这里,我们先介绍一种列表推导式:

“列表推导式(List comprehensions)也叫列表解析,灵感取自函数式编程语言 Haskell。Ta 是一个非常有用和灵活的工具,可以用来动态的创建列表,语法如:[有关A的表达式 for A in B]”

Python练习题详解之数组(小白友好)

所以,如果要实现我们的代码,让他在list 3 一行里面运行,就要用到这个列表推导式。首先观察这个代码run出来的结果,其实就是把 list1 和 list2 前面的数字匹配,然后去掉list1前面的数字和标点,然后再将两个list拼接在一起。

所以我们的思路就是,当list1和list2的元素开头的数字匹配,输出list1的元素(去掉数字和标点) + list2中的元素。

有的小伙伴可能会疑惑,啊?怎么让字符串里面的数字匹配,难道python也可以对字符串里面的内容进行识别?又应该怎么去掉字符串里的数字和标点呢?去掉的话也需要用到切片,但前面只说了数组里面可以切片,字符串里面也可以切片吗?

于是我又请教了羊哥,回答如下:

Python练习题详解之数组(小白友好)

原来如此!那就好办啦!

答案:

list3 = [x  + y [2:] for y in list1 for x in list2 if x[0] == y[0]]

Python练习题详解之数组(小白友好)

其中,x遍历list2中的每一个字符串。y遍历list1中的每一个字符串。

这道题首先用到了我们前面说过的数组切片,y[2: ]就是一个切片,切完之后,list1里面的元素会从第二位(也就是现实生活中的第三位)开始显示,也就是 [ 'k', 'orea', 'apan', 'hina'],跟list2组合一起之后,就能成功输出我们的答案了。

Python练习题详解之数组(小白友好)

奥里给!!每天进步一点点,开心~~~~