reduce函数、apply函数、zip函数

本文介绍了Python中的reduce、apply和zip函数。reduce()用于对序列进行压缩运算,现在位于functools模块中;apply()在pandas中用于应用函数到DataFrame或Series上,特别是对groupby后的聚合对象;zip()函数则用于打包可迭代对象,返回元组组成的对象,长度以最短的对象为准。此外,还提到了Python的包管理和字符编码概念。

reduce函数、apply函数、zip函数

    • 对一个序列进行压缩运算,得到一个value。
    • python2中,reduce()是内置函数,而现在,py3中,他被移植到functools模块中。
    • from functools import reduce
  • 格式
    • reduce (function,iterable,[initial])
      • function – 需要两个参数
      • iterable – 可迭代对象
      • initializer – 可选,初始参数 相当于把这个值放到列表第一位。
from functools import reduce
y=[2,3,4,5,6]
z=reduce(lambda x,y:x+y,y)

# f(x,y)=x+y
print(z) #20
from functools import reduce
y=[2,3,4,5,6]
z=reduce(lambda x,y:x+y,y,600)

# f(x,y)=x+y
print(z)
#变魔术输入2,3,4,5,6 输出23456
from functools import reduce
y=[2,3,4,5,6]
z=reduce(lambda x,y:x*10+y,y)

# f(x,y)=x+y
print(z) #23456
from functools import reduce
y=[2,3,4,5,6]
z=reduce(lambda x,y:x*10+y,y,100)#相当于把100放到列表第一位。

# f(x,y)=x+y
print(z)  #10023456

apply函数

  • 功能
    • pandas中,应用对象是pandas中的DataFrame或者Series
    • 直接对DataFrame或者Series应用函数
    • 对pandas中groupby之后的聚合对象应用apply
import numpy as np
import pandas as pd
a= np.random.randint(low=0,high=4,size=(6,6))
# print(a)
data = pd .DataFrame(a)
#print(data)
b=data.apply(lambda x:x*10)
print(b)
    0   1   2   3   4   5
0   0  30   0  20  10   0
1   0  10  10   0   0  20
2  30  30  30   0  10  20
3  10  30   0  10  30  20
4   0  10  20   0  30  10
5  10  30   0  20  20  10

zip函数

  • 功能

    • 将可迭代对象作为参数,将对象中对应的元素打包成一个个元组,返回由这些元组构成的对象
    • 长度不一样的时候,以长度短的为准
  • 注:

    • 利用*号操作符,与zip相反,进行解压。
  • 格式

    • zip(iterable1,iterable2)

      • iterable 两个或者多个可迭代序列(字符串,列表,元组,字典)

      • py2,由元组组成的列表

      • py3,

a=[1,2,3]
b=[4,5,6]
c=[1,2,3,4,5]
ziptest1=zip(a,b)
print(list(ziptest1))
#[(1, 4), (2, 5), (3, 6)]
#对字典操作只保留键,忽略值
a={1:11,2:22}
b={3:33,4:44}
c={5:55,6:66}
tp=tuple(c)
print(tp)
#(5, 6)

print(list(zip(a,b,c)))
#[(1, 3, 5), (2, 4, 6)]

module and package

包:包是通过使用‘.模块名’来阻止Python模块名称空间的方式。

具体而言,包就是一个包含__init__.py文件的文件夹。

目的:用文件夹将文件/模块组织起来。

注意

  • py3,即使包中没有__init__.py也可以使用;
  • py2,如果没有__init__.py肯定报错。

创建包的目的不是为了运行,而是为了被导入使用。

包的本质依然还是模块。

  • 使用时,import导入,导入带点的,点的左边一定是包名。
  • import导入文件时,产生名称空间的名字源于文件,import包,名称空间同样源于文件(包),__init__.py,导入包的本质导入她。

➜ school tree
.
├── api
│ ├── init.py
│ ├── students.py
│ └── versions.py
├── cmd
│ ├── init.py
│ └── manage.py
├── db
│ ├── init.py
│ └── models.py
└── init.py

import school

school.api.students.get()

直接运行报错

想要让他运行 No Error

school下的__init__.py添加from.import api

再在api下的__init__.py添加from.import students

字符编码

Python 主要识别文件内容,而不是关心扩展名

字符 ——>(机器翻译)——>二进制

字符如何应对特定数字的标准,这个标准就是字符编码。

ASCII

GBK

Unicode

UTF-8

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值