Python基础系列PythonPython

Python eval、apply、applymap和map函数

2019-08-26  本文已影响0人  我爱学python

描述

eval() 函数用来执行一个字符串表达式,并返回表达式的值。

语法

以下是 eval() 方法的语法:
eval(expression[, globals[, locals]])

参数

expression -- 表达式。
globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。

返回值

返回表达式计算结果。

实例

以下展示了使用 eval() 方法的实例:

>>>x = 7
>>> eval( '3 * x' )
21
>>> eval('pow(2,2)')
4
>>> eval('2 + 2')
4
>>> n=81
>>> eval("n + 4")
85

eval函数作用

eval函数就是实现list、dict、tuple与str之间的转化
str函数把list,dict,tuple转为为字符串

一、字符串转换成列表

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书
'''
a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"
print(type(a))
b = eval(a)
print(type(b))
print(b)
img

二、字符串转换成字典

a = "{1: 'a', 2: 'b'}"
print(type(a))
b = eval(a)
print(type(b))
print(b)
img

三、字符串转换成元组

a = "([1,2], [3,4], [5,6], [7,8], (9,0))"
print(type(a))
b=eval(a)
print(type(b))
print(b)
img

apply、applymap和map的应用

如:

>>> df = pd.DataFrame(np.random.randint(0,10,(4, 3)), columns=list('bde'), index=range(4))
>>> df
   b  d  e
   2  0  5
   8  9  1
   3  6  6
   4  8  4

apply:作用在dataframe的一行或一列上

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书
'''
>>> f = lambda x: x.max() - x.min()
>>> df.apply(f)
b    6
d    9
e    5
dtype: int64 
>>> df.apply(f,axis=1)  # 作用在一行上
   5
   8
   3
   4
dtype: int64
>>> df.apply(f,axis=0)  # 作用在一列上,axis=0可省略
b    6
d    9
e    5
dtype: int64
```
applymap:作用在dataframe的每一个元素上
```
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书
'''
>>> f2 = lambda x: x+1 if x%2==0 else x
>>> df.applymap(f2)
   b  d  e
   3  1  5
   9  9  1
   3  7  7
   5  9  5
```
关于apply传入多个参数:
```
>>> data = {'id':range(5),'value':list("abcab")}
>>> frame = pd.DataFrame(data)
>>> frame
   id value
  0     a
  1     b
  2     c
  3     a
  4     b

>>> def testf(x, str):
...     return x,str

>>> frame["id"].apply(testf, args=("ok",))
   (0, ok)
   (1, ok)
   (2, ok)
   (3, ok)
   (4, ok)
Name: id, dtype: object
# 注意这里args只能传入(元组),不能是"ok"或("ok")
```
上一篇下一篇

猜你喜欢

热点阅读