day7:python函数编写:高级内置函数(enmerate,eval,felter)

痴心易碎 提交于 2019-12-02 11:27:30

3.pyhotn中高级内置函数
(1)enmerate
返回一个可以枚举的对象,enmerate将其组成一个索引,利用它的可以同时获得索引和值
(2)eval
1)取出字符串的内容
2)将字符串str当成有效的表达式来求指并返回计算结果

# 取出字符串中的值
str = "[1,2,3,4]"
eval(str)
[1,2,3,4]
# 计算结果
>>>x=7
>>>eval('3 * x')
21

(3)filter过滤器

filert(参数1,参数2)

参数1:过滤规则的函数
参数2:要过滤的数据

应用案例:请过滤列表li=[1,2,3,4,5,6,7,8,9,10]大于5的数值

# @time:2019/10/26 11:35
# @Author:coco
# @File:06高级内置函数.py
# @software:PyCharm

# enumerate的使用
li = [11, 22, 33, 44]

res = enumerate(li)

list2 = list(res)
print('----------list2--------')
print(list2)

# dic={"a":11,"b":22}
# print(list(dic.items()))

# eval:识别字符串中的python表达式
s1 = "(1,2,3)"
s2 = "[11,22,33]"
print('----------s1--------')
print(s1, type(s1))

# 识别字符串的元组
res1 = eval(s1)
print('----------res1--------')
print(res1, type(res1))

# 识别字符串的列表
res2 = eval(s2)
print('----------res2--------')
print(res2, type(res2))

# 注意点:如果是个纯粹的字符串,那么使用eval进行转换后就变成一个变量名
# 这样打印会报错,如果是一个纯粹的字符串去打印会报错,如果前面定义一个python,就不会报错
python = 666  # 如果没有定义python=666,打印的时候会报错
s3 = "python"
res3 = eval(s3)
print('----------res3--------')
print(res3, type(res3))

# 过滤函数:filter(参数1,参数2)
# 参数1:函数
# 参数2:待过滤的数据

# 案例 li=[11,22,33,44,1,2,3,4,5,77,2,323,90]

# 过滤大于33的数据

li = [11, 22, 33, 44, 1, 2, 3, 4, 5, 77, 2, 323, 90]


def func(x):
    return x > 33

print('----------new_list--------')
# 方式一
new_list = []
for i in li:
    if func(i):
        new_list.append(i)
print(new_list)

# 方式二:filter会自动过滤后面的列表,把列表的第一个元素当成参数传到前面的固定规则函数里面,
# 根据结果是返回true还是false,接着第二个元素,如果是true会根据数据把结果保留下来,如果是false,数据扔掉
# 依次类推,遍历完所有的元素
print('----------list1--------')
new_list1 = filter(func, li)
print(list(new_list1))

# 扩展知识点:
# 匿名函数:冒号后面就是返回值,经常跟felter结合使用
print('----------new_list2--------')
new_list2=filter(lambda x: x > 33,li)
print(list(new_list2))

运行结果:
在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!