-
count()方法
count()方法用来统计tuple中某个元素出现的次数。
T = (1, 1, 2, 2, 3, 3, 1, 3, 5, 7, 9) print(T.count(1)) # ==> 3 print(T.count(5)) # ==> 1
对于不存在的元素,count方法不会报错,而是返回0,这是合理的,因为元组里面有0个不存在的元素。
T = (1, 1, 2, 2, 3, 3, 1, 3, 5, 7, 9) print(T.count(10)) # ==> 0
查看全部 -
请注意,元组(tuple)的这个特性是非常重要的,在运行上tuple的性能是list的数倍。
查看全部 -
tuple和list不一样的是,tuple是固定不变的,一旦变成tuple,tuple中的每一个元素都不可被改变,同时也不能再往tuple中添加数据,而list是可以的。
请注意,元组(tuple)的这个特性是非常重要的,在运行上tuple的性能是list的数倍。
查看全部 -
append()方法总是将元素添加到list的尾部。 指定插入位置,需要使用list的insert()方法,insert()方法和append()方法不一样,insert()方法需要两个参数,分别是需要插入的位置,以及需要插入的元素。查看全部
-
函数参数可以是任意的数据类型,只要函数内部逻辑可以处理即可。
但是,有时候由于函数的实现关系,需要特定的参数,就比如前面实现的求绝对值的函数my_abs(),如果传递一个字符串,就会引起错误。
为了保证函数的正常运行,有时候需要对函数入参进行类型的校验,Python提供isinstance()函数,可以判断参数类型,它接收两个参数,第一个是需要判断的参数,第二个是类型:
isinstance(100, int) # ==> True
isinstance(100.0, int) # ==> False
isinstance('3.1415926', str) # ==> True有了isinstance,就可以优化my_abs函数,不在里面运行出错了。
def my_abs(x):
if not isinstance(x, int) or not isinstance(x, float):
print('param type error.')
return None
if x >= 0:
return x
else:
return -x查看全部 -
如果在一个函数内部调用其自身,这个函数就是 递归函数 。
举个例子,我们来计算阶乘 n! = 1 * 2 * 3 * ... * n,用函数 fact(n)表示,可以看出:fact(n) = n! = 1 * 2 * 3 * ... * (n-1) * n = (n-1)! * n = fact(n-1) * n
所以,fact(n)可以表示为 n * fact(n-1),只有n=1时需要特殊处理:
def fact(n):
if n==1:
return 1
return n * fact(n - 1)
这个fact(n)就是递归函数理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰。
注:使用递归函数需要注意防止栈溢出。
查看全部 -
有时候函数是没有返回结果的,这个时候从函数获取到的是一个空值None。
def list_sum(l):
result = 0
for num in l:
result = result + num
print('result is {}'.format(result))
return
l = [1, 3, 5, 7, 9, 11]
result =list_sum(l) # 调用定义的sum_list函数并获得return返回的结果
print(result) # ==> None除了返回None、一个值以外,函数也可以返回多个值,在函数中,如果需要返回多个值,多个值之间使用逗号 ',' 分隔即可,但是需要注意顺序。
def data_of_square(side):
C = 4 * side
S = side * side
return C, S
C, S = data_of_square(16)
print('周长 = {}'.format(C)) # ==> 周长 = 64
print('面积 = {}'.format(S)) # ==> 面积 = 256也可以使用一个值存储函数返回的多值结果:
result = data_of_square(16)
print(result) # ==> (64, 256)注意打印的result,其实它是tuple类型,如果我们需要取出结果中的周长或者面积,使用对应位置的下标就可以获得对应的结果。
查看全部 -
while循环可以继续进行下去的条件更加简单,只需要判断while循环的条件是否为True即可,当条件为True时,即继续运行下去。查看全部
-
在Python中,定义一个函数要使用 def 语句
依次写出函数名、括号()、括号中的参数和冒号 :
然后,在缩进块中编写函数体,函数的返回值用 return 语句返回。
我们以定义一个求绝对值的函数my_abs函数为例:def my_abs(x):
if x >= 0: return x
else: return -xreturn表示返回的意思,函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回。
查看全部 -
但是r'...'表示法不能表示多行字符串,也不能表示包含'和 "的字符串。 如果要表示多行字符串,可以用'''...'''表示查看全部
-
# Enter a code
L = [[1, 2, 3], [5, 3, 2], [7, 3, 2]]
area1 = L[0][0]*L[0][1]*2+L[0][0]*L[0][2]*+L[0][1]*L[0][2]*2
area2 = L[1][0]*L[1][1]*2+L[1][0]*L[1][2]*+L[1][1]*L[1][2]*2
area3 = L[2][0]*L[2][1]*2+L[2][0]*L[2][2]*+L[2][1]*L[2][2]*2
print(area1)
print(area2)
print(area3)
查看全部 -
这个时候得到的就是一个二维list,对于二维list,列表里面的每一个元素仍然是一个列表。这个时候,如果需要从二维list all_scores获取Bob最近第三次考试的成绩,可以这样写
alice_scores = [100,89,92] bob_scores = [70,65,81] candy_scores = [88,72,77] all_scores = [alice_scores, bob_scores, candy_scores] score = all_scores[1][2] # ==> 81
其中all_scores[1]得到Bob的最近三次成绩的列表,再通过下标[2],则可以得到Bob第三次的成绩。
查看全部 -
假如班上同学Candy需要转走了,同时有一个新的同学Canlina转入,那么按照字母排序,Canlina的位置恰好是Candy的位置。
L = ['Alice', 'Bob', 'Candy', 'David', 'Ellena'] L[2] = 'Canlina' print(L)
我们也可以使用倒序索引来完成同样的功能。
L = ['Alice', 'Bob', 'Candy', 'David', 'Ellena'] L[-3] = 'Canlina' print(L)
注意,如果替换一个不存在的下标,则同样会引起Python运行错误。
L = ['Alice', 'Bob', 'Candy', 'David', 'Ellena'] L[6] = 'Canlina' Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: list assignment index out of range
查看全部 -
这个时候我们可以使用列表的pop()方法,pop()方法默认删除列表的最后一个元素,并返回。
L = ['Alice', 'Bob', 'Candy', 'David', 'Ellena'] name = L.pop() print(name) # ==> Ellena print(L) # ==> L = ['Alice', 'Bob', 'Candy', 'David']
pop()方法,除了可以删除最后一个元素以外,pop()还可以接收一个参数,指定需要删除的元素的位置。
L = ['Alice', 'Bob', 'Candy', 'David', 'Ellena'] name = L.pop(2) print(name) # ==> Candy print(L) # ==> ['Alice', 'Bob', 'David', 'Ellena']
查看全部 -
list的insert()方法,insert()方法和append()方法不一样,insert()方法需要两个参数,分别是需要插入的位置,以及需要插入的元素。
names = ['Alice', 'Bob', 'David', 'Ellena'] names.insert(2, 'Candy') print(names) # ==> ['Alice', 'Bob', 'Candy', 'David', 'Ellena']
注意,将Candy插入到第三的位置之后,原来的名字,都将自动往后移动一位,这个时候再使用相同的索引获取后面的元素,将会得到不一样的结果。
names = ['Alice', 'Bob', 'David', 'Ellena'] print(names[2]) # ==> David names.insert(2, 'Candy') print(names[2]) # ==>Candy
查看全部
举报