补充:关键字传参
def add(x, y)
return x+y
add(10, 20) #位置传参
add(x=10, y=20) #关键字传参(可以无视形参和实参的顺序)
#当关键字参数和位置参数混着用,混着用的时候要求位置参数在前,关键字参数在后面
关键字参数,一般也就是搭配默认参数来使用的,一个函数,可以提供很多的参数,来实现对这个函数的内部功能做出一些调整设定为了降低调用者的使用成本,就可以把大部分参数设定出默认值,当调用者需要调整其中的一部分参数的时候,就可以搭配关键字参数来进行操作。
列表
使用一个变量来表示很多个数据(可以放任意数据类型的数据),类似与其他语言中的数组,列表创建好之后是可以修改的。
#创建列表
#1.直接使用字面值创建 []就表示一个空列表
a = []
print(type(a))
#2.使用list()创建
b = list()
print(type(b))
#3.在创建列表时,在[]指定列表的初始值 可以在同一个列表放不同元素
a = [1, 2, 3, 4, 'hello', True, [4, 5, 6]]
print(a)
#下标访问运算符[]访问元素 下标可以写成负数 -1等价于len(a)-1 倒数第一个元素
print(a[4]) #‘hello’
a[4] = 100 # ‘hello’替换为100
print(a[4]) #输出100
print(len(a)) #输出7
print(a[-1]) #【4,5,6】 -1表示倒数第一个
print(a[len(a)-1]) #【4,5,6】
当下标超出有效范围的时候,尝试访问就会出现异常
切片操作
切片操作,可以省略,前后的两个边界的,切片操作是一个比较高效的操作,进行切片的时候,只是取出了原有列表中的一个部分,并不涉及到"数据的拷贝":假设有一个很大的列表,进行切片,切片的范围也很大,即使如此,切片操作仍然非常高效。
a = [1, 2, 3, 4]
print(a[1:3]) #前闭后开 包含1不包含3
print(a[1:]) #从1号到末尾
print(a[:2]) #从0号取到2-1号
print(a[:-1]) #从0号取到倒数第一个前面的一个
print(a[:]) #均省略 全打印
[2, 3]
[2, 3, 4]
[1, 2]
[1, 2, 3]
[1, 2, 3, 4]
#带步长切片
a = [1, 2, 3, 4, 5, 6, 7, 8]
print(a[::2])
print(a[::3])
print(a[1:-1:3])
print(a[::-1]) #步长为负数,意思是从后往前来取元素
#当切片中的范围超出有效的下标后,不会出现异常!而是尽可能的把符合要求的元素取到
[1, 2, 3, 4]
[1, 3, 5, 7]
[1, 4, 7]
[2, 5]
[8, 7, 6, 5, 4, 3, 2, 1]
#遍历
print(a[:100])
for i in a: #不支持对列表的值进行修改
print(i)
for i in range(0, len(a)): #支持对列表的值进行修改
a[i] += 10
print(a[i])
i = 0
while i < len(a):
print(a[i])
i += 1
[1, 2, 3, 4, 5, 6, 7, 8]
1
2
3
4
5
6
7
8
11
12
13
14
15
16
17
18
11
12
13
14
15
16
17
18
#续上列表a
a.append(9)
print(a[len(a)::-1])
a.insert(1, 'hello') #超出范围时会加到末尾
print(a[1])
print(1 in a) #判断1是否在列表a中 返回值为布尔类型
print(1 not in a)
#使用 index 方法,来判断当前元素在列表中的位置,得到一个下标
print(a.index(11)) #不在的话就会报错
a.pop() #弹出最后一个
print(a)
a.pop(0) #弹出下标元素
print(a)
a.remove('hello') #遍历a列表 删除指定元素
print(a)
[9, 18, 17, 16, 15, 14, 13, 12, 11]
hello
False
True
0
[11, 'hello', 12, 13, 14, 15, 16, 17, 18]
['hello', 12, 13, 14, 15, 16, 17, 18]
[12, 13, 14, 15, 16, 17, 18]
[12, 13, 14, 15, 16, 17, 18, 5]
[12, 13, 14, 15, 16, 17, 18, 5]
[5]
[12, 13, 14, 15, 16, 17, 18, 5, 5]
列表拼接
使用加号”+“ extend 。None是一个特殊的变量值,表示什么都没有(类似与C中的NULL或者Java中的null)。
a = [1, 2]
b = [3]
c = a + b #c为【1,2, 3】 对原来的ab无影响
a.extend(b) #相当于直接把b的内容拼接到了a的后面
元组
和列表操作相同但是不支持修改,只能重新建立一个新的元组。
使用元组的好处:协同开发的时候,一个程序猿A实现一些功能,提供给程序猿B来使用A写好的一些函数,让B去调用。函数肯定要传参,B在传参的时候就可能会纠结一个问题:我把我的参数传过去了,A的函数里面是否会把我的参数的内容给改了呢?如果使用的元组作为参数,就可以避免这样的纠结。
元组不能修改=>不可变对象。
不可变对象,是可以哈希的!