第三章——函数
None
表示没有值,是NoneType
数据类型的唯一值。print
的返回值就是None
print()
函数有可选的变元end
和sep
,分别指定在参数末尾打印什么,在参数之间打印什么来隔开它们例如:
end
1
2print('hello')
print('word')1
2print('hello',end=' ')
print('word')输出分别为:
1
2hello
word1
hello word
sep
1
2
3
4'a','b','c') print(
a b c
'a','b','c',sep=',') print(
a,b,c全局作用域中的代码不能使用局部变量,局部作用域可以访问全局变量
在不同的作用域中,可以用相同的名字命名不同的变量
global
在局部作用域中修改全局变量例如:
1
2
3
4
5
6
7def spam():
global eggs
eggs='spam'
eggs='global'
print(eggs)
spam()
print(eggs)在第一次输出的时候,由于eggs未被修改,所以输出
global
,第二次输出的时候,因为经过了spam,eggs变成了spam,所以输出为spam
异常处理
出现的错误可以用try...except
来处理。将可能出错的语句放在try
子句中,如果错误发生,程序执行转到接下来的except
子句开始处
第四章——列表
列表的负数下标表示列表中的倒数第几个元素,如:
num[-1]
表示num列表中的最后一个元素用
len()
获取列表的长度,方法和字符串相同,返回值为列表中值的个数例如:
1
2
3'acb','d','e'] arr=[
len(arr)
3改变列表中元素的值时,直接找到对应的下标,进行赋值即可
切片
切片得到的是一个新的列表,而不是一个值。
在一个切片中,第一个整数表示切片开始出的下标,第二个整数表示结束的下标
第一个整数默认为$0$,第二个整数默认为列表中最后一个元素的下标
例如:
1 | 'a','b','c','d','e'] arr=[ |
列表的连接和复制
+
运算符可以连接两个列表;*
运算符可以实现列表的复制
例如:
1 | 1,2,3]+['a','b','c'] [ |
列表的使用
for i in []
表示i从列表的第一个元素开始遍历数组,i对应的值为当前元素的值例如:
1
2for i in [1,4,2]:
print(i)输出结果为:
1
2
31
4
2如果想要根据获得当前遍历元素的下标,可以先用
len()
获得列表的长度,然后用range()
来遍历下标,arr[i]
来访问元素利用
in
和not in
可以快速确定元素是否在列表中,返回值为bool
类型例如:
1
2
3
4'd' in ['a','b','c']
False
'c' in ['a','b','c']
True
列表中的一些方法
index()
用来查找某个元素是否在列表中,如果在列表中,返回该元素在列表中第一次出现的下标,否则,会报ValueError
例如:
1
2
3
4
5
6
7'a','a','b'] arr=[
'a') arr.index(
0
'd') arr.index(
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 'd' is not in listappend()
和insert()
都可以向列表中加入元素,append()
只能把元素加入到列表的尾部,insert()
则可以向列表中的任意位置加入元素,insert()
的第一个整数表示下标,如果该值超过当前列表的长度,那么元素将会被加到列表的末尾1
2
3
4
5
6
7
8
9
10'a','b'] arr=[
'c') arr.append(
arr
['a', 'b', 'c']
2,'d') arr.insert(
arr
['a', 'b', 'd', 'c']
10,'e') arr.insert(
arr
['a', 'b', 'd', 'c', 'e']remove()
用来删除列表中第一次出现的元素,如果该元素不在列表中,则会ValueError
1
2
3
4
5
6
7
8'a','b'] arr=[
'a') arr.remove(
arr
['b']
'a') arr.remove(
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in listsort()
用来对列表进行排序,默认为按ASCII
码升序排序,sort(reverse=True)
可以将排序改为降序,sort(key=str.lower)
将排序按照普通字典序排序1
2
3
4
5
6
7
8
9
10
11
12
13
14'a','A','b'] arr=[
arr.sort()
arr
['A', 'a', 'b']
'a','A','b','B'] arr=[
arr.sort()
arr
['A', 'B', 'a', 'b']
True) arr.sort(reverse=
arr
['b', 'a', 'B', 'A']
arr.sort(key=str.lower)
arr
['a', 'A', 'b', 'B']
字符串和元组
字符串和元组都是不可改变的
字符串和元组访问元素的方式和列表一样,注意:元组输入要用
()
而不是[]
如果元组中只有一个元素,在该元素后面加一个
,
来告诉程序这是一个元组例如:
1
2
3
4123,)) type((
<class 'tuple'>
>>> type((123))
<class 'int'>字符串、列表、元组可以相互转换
1
2
3
4
5
6'a','b','c']) tuple([
('a', 'b', 'c')
'a','b','c')) list((
['a', 'b', 'c']
'abc') list(
['a', 'b', 'c']如果将列表直接赋值给另一个列表,那么改变这两个列表中的其中一个,这两个列表均会被改变。原因是在对列表进行赋值的时候,只是将列表中的元素给了另一个列表,而不是列表本身。两个列表均指向同一个列表,所以当一个列表被修改时,指向的列表会被改变,从而两个列表的元素均会变化。
使用
copy
模块里的copy()
和deepcopy()
函数可以实现对列表本身的复制,1
2
3
4
5
6
7
8import copy
'a','b','c'] arr1=[
arr2=copy.copy(arr1)
1]='d' arr2[
arr2
['a', 'd', 'c']
arr1
['a', 'b', 'c']