pandas基础1

预备阶段

Python 基础

语法糖

列表推导式

  • 生成一个数字序列:
 L=[]
def my_fuction(x):
    return 2*x

for i in range(5):
        L.append(my_fuction(i)) #append() 方法用于在列表末尾添加新的对象
L
[0, 2, 4, 6, 8]
  • 用列表推导式进行简化([* for i in *]):
[my_fuction(i) for i in range(5)]
[0, 2, 4, 6, 8]
  • 列表表达式还支持多层嵌套,如下面的例子中第一个 for 为外层循环,第二个为内层循环:
[m+"_"+n for m in['a','b'] for n in ['c','d']]
['a_c', 'a_d', 'b_c', 'b_d']

条件赋值

  • 除了列表推导式,另一个实用的语法糖是条件赋值,其形式为 value = a if condition else b (使用语法糖能够增加程序的可读性)
value="cat" if 2>1 else "dog"
value
'cat'
  • 等价于如下的写法:
a,b="cat","dog"
condition=2>1
if condition:
    value=a
else:
    value=b
value
'cat'

例:截断列表中超过 5 的元素:

L=[1,2,3,4,5,6,7]
[i if i<=5 else 5 for i in L]
[1, 2, 3, 4, 5, 5, 5]

匿名函数与 map 方法

有一些函数的定义具有清晰简单的映射关系,例如上面的 my_func 函数,这时候可以用匿名函数的方法简洁地表示.

以下两行代码只是介绍了lambda的用法,但是并非真正的匿名函数使用。

my_fuc=lambda x :2*x
my_fuc(3)
6
my_fuc=lambda a,b:a+b
my_fuc(2,3)
5

但上面的用法其实违背了“匿名”的含义,事实上它往往在无需多处调用的场合进行使用,例如上面列表推导式中的例子,用户不关心函数的名字,只关心这种映射的关系:

[(lambda x:2*x) (i)for i in range(5)]
[0, 2, 4, 6, 8]

对于上述的这种列表推导式的匿名函数映射, Python 中提供了 map 函数来完成,它返回的是一个 map 对象,需要通过 list 转为列表:

map((lambda x :2*x),range(5))  #返回一个map对象
<map at 0x29d1fde56d0>
list(map((lambda x :2*x),range(5)))  #map对象用list转换为列表
[0, 2, 4, 6, 8]

对于多个输入值的函数映射,可以通过追加迭代对象实现:

list(map((lambda a,b:str(a)+'_'+b),range(5),list('abcde'))) #在默写的时候没有在a前写str,没有在abcde外加引号、前写list
['0_a', '1_b', '2_c', '3_d', '4_e']

zip 对象与 enumerate 方法

zip打包

zip 函数能够把多个可迭代对象打包成一个元组构成的可迭代对象,它返回了一个 zip 对象,通过 tuple, list
可以得到相应的打包结果:

L1,L2,L3=list('abc'),list('edf'),list('ghi')
list(zip(L1,L2,L3))
[('a', 'e', 'g'), ('b', 'd', 'h'), ('c', 'f', 'i')]
tuple(zip(L1,L2,L3))
(('a', 'e', 'g'), ('b', 'd', 'h'), ('c', 'f', 'i'))
for i,j,k in zip(L1,L2,L3):
    print (i,j,k)
a e g
b d h
c f i

enumerate打包

enumerate 是一种特殊的打包,它可以在迭代时绑定迭代元素的遍历序号(直接绑定序号和L的每个值):

L=list('abcd')
for i,j in enumerate(L):
    print (i,j)
0 a
1 b
2 c
3 d

用 zip 对象也能够简单地实现这个功能(输出序号和L的每个值):

for i,j in zip(range(len(L)),L):
    print (i,j)
0 a
1 b
2 c
3 d

字典映射也可利用 zip 对象:

dict(zip(L1,L2))   #L1内元素为键,L2内元素为值
{'a': 'e', 'b': 'd', 'c': 'f'}

解压操作( * 操作符和 zip 联合使用):

L4=list(zip(L1,L2,L3))
L4
[('a', 'e', 'g'), ('b', 'd', 'h'), ('c', 'f', 'i')]
list(zip
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值