欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

函数补充

程序员文章站 2022-05-12 22:06:31
...

三个重要的大数据用到的函数:

map()函数接收两个参数,前者是函数,后者是序列map将序列的每个元素传入函数中执行,并把结果作为新的list返回。
举例说明,比如我们有一个函数f(x)=x%2,要把这个函数作用在一个list [1, 2, 3, 4, 5, 6, 7, 8, 9]上,就可以用map()实现
#使用lambda函数

print map(lambda x: x % 2, range(7))
 结果生成新的列表[0, 1, 0, 1, 0, 1, 0]
filter():函数接收两个参数,前者是函数,后者是序列对于序列中的元素进行筛选,最终获取符合条件的序列
例如,要从一个list [1, 4, 6, 7, 9, 12, 17]中删除偶数,保留奇数,首先,要编写一个判断奇数的函数:
def is_odd(x):
 return x % 2 = = 1
然后,利用filter()过滤掉偶数:
>>>filter(is_odd, [1, 4, 6, 7, 9, 12, 17])
结果:结果生成新的列表[1, 7, 9, 17]
reduce()内建函数是一个二元操作函数进行累计操作,他用来将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给reduce中的函数 func()(必须是一个二元操作函数)先对集合中的第1,2个数据进行操作,得到的结果再与第三个数据用func()函数运算,最后得到一个结果。
reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接收至少两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。
def myadd(x,y):
    return x+y #reduce()函数也是已从全局函数名调入funools模块使用时要调用
sum=_functools.reduce(myadd,(1,2,3,4,5,6,7))
print(sum)   28
python中自定义排序函数:
Python内置的 sorted()函数可对list从小到大进行排序:
>>>sorted([36, 5, 12, 9, 21])
[5, 9, 12, 21, 36] 

hus.sort()对原有列表进行排序,改变原来列表的顺序,无返回值
print(shus)就是改变后的列表

sorted()排序函数
排序时不影响原数据,产生新的排序数据
print(sorted(shus))排序后的结果
print(shus)还是原结果
例如:

ol=[("Bob",75),("Adarm",55),("Lisa",66),("Bob",88)]
ul=sorted(ol,key=lambda s:s[1],reverse=True)  #s是参数,[1]是括号里的元素下标  #reverse=True降序默认False
print(ol)[('Bob', 75), ('Adarm', 55), ('Lisa', 66), ('Bob', 88)]原体
print(ul)[('Bob', 88), ('Bob', 75), ('Lisa', 66), ('Adarm', 55)]按降序改变之后的
ol=sorted(ol,key=lambda s:s[1],reverse=True)
print(ol)[('Bob', 88), ('Bob', 75), ('Lisa', 66), ('Adarm', 55)]按降序改变之后的    #再次给ol赋值即可改变ol

对字符串排序时,有时候忽略大小写排序更符合习惯。请利用sorted()高阶函数,实现忽略大小写排序的算法。

ol=[("bob",75),("Adarm",55),("lisa",66),("cob",88)]
ul=sorted(ol,key=lambda s:str(s[0]).lower(),reverse=False)
print(ul)[('Adarm', 55), ('bob', 75), ('cob', 88), ('lisa', 66)]
small exerse:用函数的方法
# usr/bin/python
# -*-coding:utf-8-*-
'''
练习:创建2个列表 一个存姓名 一个存手机
=======通讯录管理系统=======
1.增加姓名和手机
2.删除姓名
3.修改手机
4.查询所有用户
5.根据姓名查找手机号
6.退出
============================
'''
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();




上一篇: js注意点(一)

下一篇: 备忘