第三周我们首先来考虑序列
我在第一周作业就介绍过Python强大的序列索引机制,这里再列一次
不过它和range函数有个相似的地方这里没写,就是可以设置每次几步
如
str1 =[1,2,3,4,5]
str1[0:5:2]==[1,3,5]
之后我们来介绍列表的诸多方法
分为增/删/改/查
增
最基础的添加一个元素的函数append
str1.append(“第六个“)
str1==[1,2,3,4,5,”第六个“]
所以你应该发现了,序列里的元素可以是不同类型的
但是每次一个元素显然太慢了,所以我们之后来介绍extend函数,它可以一次添加一个可迭代对象
什么是可迭代对象讷
str1.extend([“第七“,“第八”])
就加到序列最后一个元素之后了
还有一种赋值方法(其实是利用了切片
str1[len(str1):]=[8,9]
就在最后一个元素之后加上了新元素
但是记得这里有个:,意思是从哪里开始赋值,因为是从无到有,所以要加:,之后改就不用了
但是假如要从中间插入一个元素呢
显然Python的便利性就体现出来了
使用insert()函数
str1.insert(1,2)
就在第二个元素的位置插入了2
删
使用remove函数
流弊的是remove甚至有搜索匹配的功能
例如
str1.remove(“第六个“)
就删除了,当然这么智能也是有使用规则的
- 多个可匹配相同元素时,只删除第一个
- 无元素在序列内匹配的话,报错
当然,按照序列次序删除元素也是可以的
使用pop()函数
str1.pop(2)
就删除了第三个元素
还有一键删除所有元素
str1.clear()
改
单个元素的替换
str1[3]= 99
第四个元素就被替换为99
多个连续元素的替换
str1[2:]=[55,66]
第三个元素起包括第三个元素之后的所有元素,就只剩55和66了
假如是纯数字序列,可以用sort()函数直接排序(从小到大)
str1.sort()
可以反转这个序列(包括非数值序列)
str1.reverse()
可以直接一步从大到小排序
str1.sort(reverse=True)
查
查一个元素出现了几次
str1.count(2)
查某个元素的索引值(也就是在数组的下标,从0开始)
str1.index(2)
还可以做一个带查找的改
str1[str1.index(1)]=51
1元素就被改为51了
和remove一样,多个相同值替换第一个
还有个拷贝序列的操作
浅拷贝
str2 =str1.copy()
str3=str1[:]
这两者完全等价
列表的加法和乘法
s=[1,2,3]
t=[4,5,6]
s+t==[1,2,3,4,5,6]
s*3== [1, 2, 3, 1, 2, 3, 1, 2, 3]
多维列表
这里想输出二维列表就要用二重循环,下面的print()起换行的作用(Python的print()自动换行)
其它创建多维列表的方法
注意这里的A和B是不同的(is 是同一性运算符)
当然列表的方法这里还没说完,但是老师讲的内容更省略,所以为了追上老师的进度,我们先讲函数
函数
定义函数需要def语句
def myfunc():
pass
就定义了一个最简单的函数
相较于C def就是void或者int
同理和C一样,括号内可以通过参数赋值
def myfunc(name):
print(name)
myfunc("Love")
Love
参数可以有多个
当然你想让他返回值的话就加一个return
其实你不写return,它也会在执行完返回一个None
但是要注意一点,一旦一个函数返回值,它就直接结束,不会执行后面的语句,和C的return一样
函数的参数
1位置参数(按照默认位置赋值)
2关键字参数
3默认参数(这个默认参数必须填到位置参数之后)
4位置参数关键字参数混合(关键字参数也得在位置参数之后)