pythonreduce()函数、sorted()函数、reversed_cmp函数、类和对象

reduce():对于序列内所有元素进行累计操作

  • import _functools
    li=(1,2,3,4,5,6,7);
    def add(a,b):
        return a+b;
    total=_functools.reduce(add,li);
    print(total);
  • reduce()还可以接收第3个可选参数,作为计算的初始值
  • import _functools
    li=(1,2,3,4,5,6,7);
    def add(a,b):
        return a+b;
    total=_functools.reduce(add,li,100);#初始值为100
    print(total);

sorted()可对list进行排序:

  • ol=[1,5,3,7,9,33,45,10];
    ul=sorted(ol);
    print(ul);
  • ol=[True,False];
    ul=sorted(ol);
    print(ul);

reversed_cmp函数:

  • ol=[1,5,3,7,9,33,45,10];
    ul=sorted(ol,reverse=True);#默认正序为False
    print(ul);
  • ol=[('Bob',74),('Adam',92),('Bart',66),('List',88),('aisa',88)];
    print(ol);
    ol=sorted(ol,key=lambda s:str(s[0]).lower(),reverse=False);
    print(ol);

小练习:

  • 用函数方法编写通讯录管理系统
  • # usr/bin/python
    # -*-coding:utf-8-*-
    flag = True;
    names = ['ok', 'ko'];
    phones = ['232323232', '12312332'];
    
    def Menu():
        global flag
        while flag:
            print("\n\n=======通讯录管理系统=======")
            print("1.增加姓名和手机")
            print("2.删除姓名")
            print("3.修改手机")
            print("4.查询所有用户")
            print("5.根据姓名查找手机号")
            print("6.退出")
            print("============================")
            i = int(input("请选择:"));
            while True:
                if i in range(1, 7):
                    break;
                else:
                    i = int(input("输入错误,请重新输入!"))
            if i == 1:
                addUser();
            elif i == 2:
                delUser();
            elif i == 3:
                updatePhone();
            elif i == 4:
                showList();
            elif i == 5:
                getPhoneByName()
            elif i == 6:
                flag = False;
    def addUser():
        name=input('请输入姓名:')
        if checkUser(name)!=-1:
            print("姓名已存在!")
        else:
            names.append(name);
            phones.append(input('请输入手机号:'));
    
    def delUser():
        name = input("请输入姓名:");
        index=checkUser(name)
        if index!=-1:
            names.pop(index);
            phones.pop(index);
            print("删除成功!")
        else:
            print("姓名不存在!")
    
    def updatePhone():
        phone = input("请输入手机号:");
        index=checkPhone(phone);
        if index!=-1:
            new_phone = input("请输入新的手机号:");
            phones[index] = new_phone
            print("修改成功!")
        else:
            print("手机号不存在!")
    
    def showList():
        for i in range(len(names)):
            print(names[i], phones[i])
    
    def getPhoneByName():
        name = input("请输入姓名:");
        index=checkUser(name)
        if index!=-1:
            print("手机号:", phones[index])
        else:
            print("姓名不存在!")
    
    def checkPhone(phone):
        if phone in phones:
            return  phones.index(phone)
        else:
            return -1;
    def checkUser(name):
        '''
        :param name 查找的名字:
        :return 有:下标 没有-1:
        '''
        if name in names:
            return  names.index(name)
        else:
            return -1;
    
    Menu();

类和对象

  • class Student:#类的命名不能使用除下划线以外的其他字符,不能以数字开头
        pass#用于保证合适完整,保证语义完整
  • 属性分归属 类属性和对象属性
  • 对象属性的两种创建方法:
  • 1、self:对象的载体
  • class Student:
        def __init__(self,name,age):
            self.name=name;
            self.age=age;
        def showName(self):
            print("我叫{}".format(self.name));
    zhangsan=Student('张三',30);
    zhangsan.showName()
  • 2、通过 对象.属性()创建
  • class Student:
        def showName(self):
            print("我叫{}".format(self.name));
    zhangsan=Student();
    zhangsan.name='张三';
    zhangsan.showName()
  • class Student:
        def showName(self):
            print("我叫{}".format(self.name));
    zhangsan=Student();
    zhangsan.name='张三';
    zhangsan.name='ok';#第二个值会覆盖第一个值
    zhangsan.showName()

转载于:https://my.oschina.net/u/3764483/blog/1613131

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值