Python编程基础一
一:常用的函数
1.list的常用用法
list1 = ['a','b','c','d','e','f']
list1.append('g') # 在末尾添加元素
print(list1)
list1.insert(2, 'ooo') # 在指定位置添加元素,如果指定的下标不存在,那么就是在末尾添加
print(list1)
list2 = ['z','y','x']
list1.extend(list2) #合并两个list list2中仍有元素
print(list1)
print(list2)
结果:
['a', 'b', 'c', 'd', 'e', 'f', 'g']
['a', 'b', 'ooo', 'c', 'd', 'e', 'f', 'g']
['a', 'b', 'ooo', 'c', 'd', 'e', 'f', 'g', 'z', 'y', 'x']
['z', 'y', 'x']
2.count计数和index查找
list1 =['a','b','c','a','d','d']
print(list1.count('a'))
print(list1.index('a'))
print('a' in list1)
2
0
True
3.删除元素
list =['a','b','c','d','f','e']
print(list.pop(3))
print(list)
list.remove('a')
print(list)
d
['a', 'b', 'c', 'f', 'e']
['b', 'c', 'f', 'e']
重点!重点!重点!
4.生成器
# 第一种方法类似列表生成式
L = [x*x for x in range(10)]
print(L)
g = (x*x for x in range(10))
for i in g:
print(i)
#第二种方法基于函数
def reverse_print(string):
print(string[::-1])
return 'Successful'
ret = reverse_print('Molly')
print(ret)
def facctor(max_num):
# 这是一个函数 用于输出所有小于max_num的质数
factor_list = []
n = 2
while n<max_num:
find =False
for f in factor_list:
if n % f == 0:
find =True
break
if not find:
factor_list.append(n)
yield n
n+=1
g = facctor(100)
for i in g:
print(i)
5.错误和异常处理
- try:
- <语句> #运行别的代码
- except <名字>:
- <语句> #如果在try部份引发了’名字’异常
- except <名字>,<数据>:
- <语句> #如果引发了’名字’异常,获得附加的数据
- else:
- <语句> #如果没有异常发生
- finally:
- <语句> #有没有异常都会执行
try,except语句的异常抛出机制,是在try语句中发生异常,之后不再运行try下面的语句,而是直接执行except中的语句
list1 = [1,2,3,4,'5',6,7,8]
# n=1
for i in range(len(list1)):
try:
list1[i]+=1
print(list1[i])
except:
print('有异常发生')
将发生的异常具体说明
list1 = [1,2,3,4,'5',6,7,8]
n=1
for i in range(len(list1)):
try:
list1[i]+=1
print(list1[i],end=" "),
except TypeError as e:
print(e)
输出:运行耗时: 31毫秒 2 3 4 5 can only concatenate str (not "int") to str 7 8 9
样例二:
list1 = [1,2,3,4,'5',6,7,8]
n=1
for i in range(len(list1)):
print(i)
try:
list1[i]+=1
print(list1[i])
except IOError as e:
print(e)
print("输入输出异常")
except :
print("有错误发生")
else:
print("正确执行")
finally:
print("总是执行")
6.元组:tuple
python中的函数tuple()可以将列表转化为元组,元组是不可以被修改的
而对于字典的转化方式,只会返回字典的key组成的tuple
tuple() 函数不是改变值的类型,而是返回改变类型后的值,原值不会被改变:
样例:
test_list1 = ('a','b','c')
test_list2 = ['x','y','z']
test_tuple = tuple(test_list2)
# test_list2 可以修改,tuple() 函数不是改变值的类型,而是返回改变类型后的值,原值不会被改变
test_list2[2] = '这是修改的'
#下面这行报错,元组不可修改
# test_list1[2]='这是修改的'
print(test_list1)
print(test_list2)
print(test_tuple)
输出
('a', 'b', 'c')
['x', 'y', '这是修改的']
('x', 'y', 'z')
二:函数用法
1.函数的传参(怎样传多个参数,也叫可变参数)
方法一:将参数定义为元组类型的
def all_student_names(*names):
for name in names:
print('姓名:', name)
all_student_names('张三','李四','王五')
输出:
姓名: 张三
姓名: 李四
姓名: 王五
方法二:将传入的参数定义为列表
def all_student_names(names):
for name in names:
print('姓名:', name)
names = ('张三','李四','王五')
all_student_names(names)
姓名: 张三
姓名: 李四
姓名: 王五
2.关键字参数
关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。
def student_info(name, age, **kw):
print(f'我的名字叫:{
name},年龄:{
age},其它信息:{
kw}')
if 'city' in kw:
print('来自:', kw['city'])
student_info('张三', 18, height=180, city='北京')
输出:
我的名字叫:张三,年龄:18,其它信息:{
'height': 180, 'city': '北京'}
来自: 北京
3.lambda匿名函数
ython 使用 lambda 来创建匿名函数。
lambda 只是一个表达式,函数体比 def 简单很多。
定义一个加法函数
add lambda arg1,arg2:arg1+arg2
add(1,2)
# 数字转字符串
int2str = lambda x : str(x)
int2str(5)
4.高阶函数
add = lambda x,y:x+y
mul =lambda x,y:x*y
SS = lambda x,y:x**2+y**2
print(func_xy(1,2,add))
print(func_xy(1,2,mul))
print(func_xy(1,2,SS))
6.python常用的高阶函数
map和reduce函数的参数第一个传入函数,第二个传入数值
from functools import reduce
mul_xy = lambda x,y:x*y
print(reduce(mul_xy,[1,3,5,7,9]))
结果:945
7.sorted()排序
对坐标轴排序
from functools import reduce
mul_xy = lambda x,y:x*y
print(reduce(mul_xy,[1,3,5,7,9]))
points = [(5,2), (7,3), (3,4),(1,1),(2,6)] # 按x坐标排序 y坐标排序 和0点距离排序
f_x = lambda x:x[0]
print(sorted(points,key=f_x))
[(1, 1), (2, 6), (3, 4), (5, 2), (7, 3)]