Python之内置函数

 

                       

 

# eval与exec

#1、语法
# eval(str,[,globasl[,locals]])
# exec(str,[,globasl[,locals]])

#2、区别
#示例一:
s='1+2+3'
print(eval(s)) #eval用来执行表达式,并返回表达式执行的结果
print(exec(s)) #exec用来执行语句,不会返回任何值
'''
6
None
'''

#示例二:
print(eval('1+2+x',{'x':3},{'x':30})) #返回33
print(exec('1+2+x',{'x':3},{'x':30})) #返回None

# print(eval('for i in range(10):print(i)')) #语法错误,eval不能执行表达式
print(exec('for i in range(10):print(i)'))
View Code

 

#map:映射

1.将列表中的的元素,平方,再生成新的列表

l = [1, 2, 3, 7]
m = map(lambda item: item ** 2, l)
print(m)

print(list(m))  # 变成列表输出

'''
<map object at 0x00000000024FF978>
[1, 4, 9, 49]
'''
View Code

2.为列表中的每个元素,添加新内容,再生成新的列表

name_lis = ['tom', 'jerry', 'jack']

new = map(lambda name: name + 'NB', name_lis)

print(list(new))

# 输出结果
['tomNB', 'jerryNB', 'jackNB']
View Code

 

 #filter:过滤

name_l = [
    {'name': 'Tom', 'age': 18},
    {'name': 'Jerry', 'age': 1000},
    {'name': 'Rose', 'age': 9000},
]

"""
#------------利于理解
n = {'name': 'egon', 'age': 18}
print(n['age'] > 100)  # 此步 是个判断,结果是 False
n = {'name': 'tom', 'age': 1000}
print(n['age'] > 100)  # 此步 结果是个 True
"""
f = filter(lambda n: n['age'] > 100, name_l)  # 左边函数若是True,则 过滤出来

for i in f:
    print(i)

# 输出结果
{'name': 'Jerry', 'age': 1000}
{'name': 'Rose', 'age': 9000}
View Code

 

#slice: 切片

l = [1, 2, 3, 4, 5, 6, 7, 8, 9]

# 第一种方法
print(l[1:7:2])


# 用slice方法
s = slice(1, 7, 2)
print(l[s])


#结果
[2, 4, 6]
View Code

 

#reduce:合并结果

from functools import reduce

li = list(range(100))
print(li)
print(reduce(lambda x, y: x + y, li))
View Code

 

#enumerate:枚举

li = ['a', 'b', 'c']

for i in enumerate(li, 1):
    print(i)

# 输出结果
(1, 'a')
(2, 'b')
(3, 'c')
View Code

 

#zip:组合

albums = ('Jerry', 'Rose', 'Jack', 'Tom')
years = (1960, 1987, 1990, 2003)

for i in zip(albums, years):
    print(i)

#结果:
('Jerry', 1960)
('Rose', 1987)
('Jack', 1990)
('Tom', 2003)
View Code

 

posted @ 2018-04-26 11:00  shadow3  阅读(98)  评论(0)    收藏  举报