Python学习-0415

一、函数复习

  • 练习题:调用函数输出结果

#def 申明一个函数,第一个是默认参数,第二个参数是一个默认值为[]的列表
def f(x,l=[]):
    for i in range(x):
        l.append(i*i)
    print(l)
f(2)
#解析:
#传入参数:f=2,l[]
#输出:range(2)的平方追加到l[]中,结果也就是[0,1]

f(3,[3,2,1])
#解析:
#传入参数:3l[3,2,1]
#输出:range(3)的平方追加到l[]中,l[]中已存在[3,2,1],输出结果也就是:[3,2,1,0,1,4]

f(3)
#解析:
#传入参数3,l[0,1]  由于l[]内存地址中已经记录了l[0,1],所以ll[0,1]。如
#输出结果[0,1,0,1,4]

#规范写法:就算是传入参数为空也需要定义
f(x=3, l=[])
# 结果: [0, 1, 4]
  • 函数中的关键字:def:定义函数   return:返回值   pass 占位符    exit(1):退出程序

       print 和return的区别:return为返回值,print为在函数中打印

       pass和exit的区别:pass为占位符pass代码后面有代码还会继续执行,而exit()为直接退出程序:

       

    def l():
        pass
        print("111")
    def l2():
        exit()
        print("2222")
    #会打印“111”
    l()
    #没有输出
    l2()
  • 函数的参数:*args tuple类型对应赋值   **kwargs dict类型参数对应赋值
  •  匿名函数:
    add = lambda x,y:x+y



二、高阶函数

  •    高阶函数:python内置函数,可以把函数当做参数传递的一种函数。
       高阶函数一般使用的比较少
       高阶函数都是可以通过代码逻辑实现的,但是没有高阶函数效率高
  • map函数
#参数: 函数,list
#返回:把list中的值传入到函数中,然后返回函数处理完的结果
def testMap(x):
    print(x * x)
print(list(map(testMap,[1,4,8])))
  • filter函数
#filter函数
#参数:函数,list
#对列表中每个元素进行判断,返回一个符合条件的list
f = list(filter(lambda x:x % 2 ==1,range(1,10)))

print(f)


  • reduce函数

#reduce函数
#参数:函数,list
#list前两位元素传递给函数,第二次调用时把前两位的计算结果当成第一个参数,list的第三位元素当做第二个参数,后面的以此类推
def add(x,y):
    return x + y
result2 = reduce(add,[1,3,4,23])
print(result2)
  •  sorted函数  比较常用的函数

#sorted函数
#参数:可迭代对象,key 对什么进行排序,reverse  bool类型,如果为true为反序, 默认为false
#print(sorted([1,2323,1,123,3,44],reverse=True))

#使用sorted函数对字典进行排序
m = dict(a=1,b=22,c=9,d=4)
#使用items把所有的元素遍历出来
print(sorted(m.items()))
#使用匿名函数指定m[1]也就是value进行排序
print(dict(sorted(m.items(),key=lambda x:x[1])))


三、列表生成式和列表生成器

  • 列表生成式:生成列表的表达式可以快速的生成列表,代码却很简洁。
  •  格式:

         生成式:[exp for val in collection if condition] 

         生成器:(exp for val in collection if condition)

         #列表生成式:

  lb = [x for x in  range(1,10)]
  #列表生成器:
  lb = (x for x in  range(1,10))
  •  如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通的函数而是一个列表生成器
def test():
    a = 1
    for i in range(1, 10):
        yield i
        # return i
        a += 1
        # return i
#returnyield的区别
# yield 可以理解成return,但是比return多一些角色
# yiele 每次都返回,但是下一次取值时,从上一次yield的下一行开始
m = test()
print(m)

四、练习题

    需求:把/etc/passwd 文件通过uid进行排序并生成一个新文件

    

#练习题:把/etc/passwd 文件通过uid进行排序并生成一个新文件
result = ""
with codecs.open("passwd", "r") as f:
    #步骤:1、通过文件操作方法readlines()把文件内容读取出来,返回一个list
        # 2、使用sorted高阶函数对读取出来的list进行排序,使用key参数指定以UID进行排序
        #3、把排序结果写入到新的文件中
    result = sorted(f.readlines(), key=lambda item: int(item.split(":")[2]))
with codecs.open("sortPasswd", "w") as f:
    f.writelines(result)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值