16-高阶函数&虚拟环境

2018-11-17  本文已影响19人  墨雨love薏雪

一、高阶函数【掌握】

1.map()

代码演示:

"""
map(function,iterable)
function:函数
iterable:可迭代对象
作用:将传入的函数依次作用于可迭代对象中的每一个元素,并把结果【Iterator】返回
"""
#需求1:给一个已知列表中的元素求平方
def square(x):
    return x ** 2
list1 = [1,2,3,4,5]
result1 = map(square,list1)
#注意:map是一个类,表示一种数据类型,集合或者序列,使用类似于list,tuple,set
print(result1)   #<map object at 0x000001EE25431DA0>
print(type(result1))   #<class 'map'>
print(list(result1))  #[1, 4, 9, 16, 25]

result2 = map(lambda x:x ** 2,list1)
print(list(result2))

#str = 10

#需求2:将整型元素的列表转换为字符串元素的列表
#举例:[1,2,3,4]------>["1","2","3","4"]
#str(1) ---- >字符串1
#注意:在使用系统函数之前,最好不要出现同名的变量
result3 = map(str,[1,2,3,4])
print(list(result3))


#需求3:已知两个整型列表,将两个列表中相同位置的元素相加,得到一个新的列表
def add(x,y):
    return  x  + y
l1 = [1,2,3,4,5]
l2 = [6,7,8,9,10]

result4 = map(add,l1,l2)
print(list(result4))

2.reduce()

代码演示:

from  functools  import  reduce

"""
reduce(function,Iterable)  :通过函数对参数列表中的元素进行累积
function:函数
Iterable:可迭代对象,一般使用列表
工作原理:用传给reduce的function先作用于list中第一个和第二个元素,用得到的结果和list中第三个元素计算。。。
reduce(add,[a,b,c,d])
add(add(add(a,b),c),d)---->递归
"""

#需求1;求一个已知列表中元素的和
list1 = [1,2,3,4,5]
def add(x,y):
    return x + y
result1 = reduce(add,list1)
print(result1)

result2 = reduce(lambda x,y:x + y,list1)
print(result2)

#需求2:将列表[1,3,5,7,9]变换成整数13579
"""
分析:
13 = 1 * 10 + 3
135 = 13 * 10 + 5
1357 = 135 * 10 + 7
13579 = 1357 * 10 + 9
"""
list2 = [1,3,5,7,9]
def fn(x,y):
    return x * 10 + y

result3 = reduce(fn,list2)
print(result3)

#需求3:
#结合map函数,实现一个将str转换为int的函数   int()

#思路:传进来一个字符串,返回一个对应的整数
def strToInt(s):
    digits = {"0":0,"1":1,"2":2,"3":3,"4":4}
    return digits[s]

#"23401"------>23401
r0 = map(strToInt,"23401")
print(list(r0))   #[2, 3, 4, 0, 1]

r1 = reduce(fn,map(strToInt,"23401"))
print(r1)   #23401
print(type(r1))   #<class 'int'>

3.filter()

代码演示:

"""
filter(function,序列)
作用:通过指定的条件过滤列表中的元素
工作原理:将传入的函数依次作用于列表中的每一个元素,根据返回的是True还是False决定元素是否需要保留
"""

#需求1:将列表中的偶数筛选出来
list1 = [1,2,3,4,5,6,7,8,9]
#作用:定义筛选的规则
def func(num):
    if num % 2 == 0:
        return  True
    return  False

result1  = filter(func,list1)
print(result1)
print(list(result1))  #[2, 4, 6, 8]

4.sorted()

代码演示:

#1.普通排序
#默认为升序排序,得到了的一个新的列表
list1 = [4,5,23,3,5,7]
result1 = sorted(list1)
print(list1)
print(result1)  #r[3, 4, 5, 5, 7, 23]

#2.按照绝对值进行排序
#默认为升序排序,排序的依据是所有元素的绝对值的大小
list2 = [4,5,-23,3,-5,7]
result2 = sorted(list2,key=abs)
print(result2)  #[3, 4, 5, -5, 7, -23]

#3.降序升序
list3 = [4,5,23,3,5,7]
result3 = sorted(list3,reverse=True)
print(result3)

#4.字符也可以实现排序
list4 = ["f","a","k","z"]
result4 = sorted(list4)
print(result4)

#5.自定义排序规则
#默认为升序排序
def myFunc(str):
    return len(str)
list5 = ["gsg","a","34535","efgg","562875678257fhjawhgj"]
result5 = sorted(list5,key=myFunc)
print(result5)

二、虚拟环境【掌握】

1, virtualenv的概述

virtualenv是用来创建Python的虚拟环境的库,虚拟环境能够独立于真实环境存在,
    并且可以同时有多个互相独立的Python虚拟环境,每个虚拟环境都可以营造一个干净
    的开发环境,对于项目的依赖、版本的控制有着非常重要的作用。

虚拟环境有什么意义?
    如果我们要同时开发多个应用程序,应用A需要Django1.11,而应用B需要Django1.8怎么办?
    这种情况下,每个应用可能需要各自拥有一套“独立”的Python运行环境。
    virtualenv就是用来为一个应用创建一套“隔离”的Python运行环境。

2, virtualenv 的安装和使用

1.安装和创建virtualenv
    a,安装虚拟环境:安装virtualenv跟安装一般的Python库是一样的操作,直接使用pip命令就行了:
        pip install virtualenv
    b,创建虚拟环境:安装完成之后就可以使用virtualenv的命令来创建虚拟环境了,
          首先需要进入需要创建虚拟环境的文件夹,比如F盘的envs文件夹,
          然后使用以下命令创建一个虚拟环境,python版本的路径是可选的:
            virtualenv 虚拟环境名称 [-p python版本的路径]
            如:virtualenv env1 
2,启动虚拟环境:
        env1\Scripts\activate
    进入虚拟环境后:
        使用pip安装numpy模块
        创建test.py文件,并在文件中使用numpy模块
        在cmd命令窗口使用python test.py执行文件
            
3,退出虚拟环境(进入真实系统环境): 
        deactivate  
        (如果报错则使用:env1\Scripts\deactivate)
    退出虚拟环境后再执行test.py:
        在cmd命令窗口使用python test.py执行文件

3, virtualenvwrapper 的安装和使用

virtualenvwrapper是virtualenv的包装版,以后用这个,更加方便

Windows: pip install virtualenvwrapper-win
(Linux:pip install virtualenvwrapper)

创建:mkvirtualenv    虚拟环境名称  -p  python的路径 
删除:rmvirtualenv    虚拟环境名称
(注意:创建的虚拟环境放在用户目录下的Envs中)

进入:workon 虚拟环境名称
退出:deactivate 

4, pip常用命令

pip install xxx:安装xxx依赖包
pip uninstall xxx :卸载xxx包
pip list:查看所有依赖包
pip freeze:查看虚拟环境新安装的包
上一篇下一篇

猜你喜欢

热点阅读