迭代器,函数的闭包
2018-07-18 01:15:43来源:博客园 阅读 ()
1, 函数名的应用,第一类对象
函数名可以像变量一样进行使用
1.赋值
2.作为list元素
3.作为参数
4.作为返回值
2, 闭包
内部函数访问外部函数的局部变量.
好处:
1.安全
2.常驻内存. 提高效率
3, 迭代器
可迭代对象(Iterable):内部包含__iter__().
迭代器(Iterator): 内部含有__iter__() __next__()
str, list, tuple, set, dict
f, range
迭代器的特点:
1.省内存
2.惰性机制
3.只能向前.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
※※※※※※※※面试题※※※※※※※※
一·
# 接收n个参数. 返回最大值和最小值(字典)
# def func(*args):
# m = args[0] # 假设第0项就是最大值
# mi = args[0]
# for el in args:
# if el > m:
# m = el # 当前这个元素比假设的那个大. 记录当前这个比较大的数
# if el < mi:
# mi = el
# return {"最大值":m, "最小值":mi}
# print(func(5,7,12,1,46,87,3))
二·
# 如果默认值参数是一个可变的数据类型, 如果有人调用的时候改变了他. 其他位置看到的也跟着改变了
# def extendList(val, list=[]):
# list.append(val)
# return list
# list1 = extendList(10)
# print('list1=%s' % list1) # list = [10]
#
# list2 = extendList(123, [])
# print('list2=%s' % list2) #
#
# list3 = extendList('a') # list = [10, 'a']
# print('list3=%s' % list3)
# 9*9
a = 1
while a <=9:
b = 1
while b <= a:
print("%dx%d=%d\t" % (a, b, a*b), end="")
b = b + 1
print() # 换行
a = a + 1
--------------------------------------------------------迭代器重点题---------------------------------------------------
# list是一个Iterable.可迭代的
# lst = ["皇阿玛", "皇额娘", "容嬷嬷", "紫薇"]
# 获取迭代器
# it = lst.__iter__()
# # 迭代器往外拿元素. __next__()
# print(it.__next__()) # 皇阿玛
# print(it.__next__()) # 皇额娘
# print(it.__next__()) # 容嬷嬷
# print(it.__next__()) # 紫薇
# print(it.__next__()) # 迭代到最后一个元素之后. 再进行迭代就报错了
# lst = ["皇阿玛", "皇额娘", "容嬷嬷", "紫薇"]
# # 模拟for循环
# it = lst.__iter__()
# while True:
# try:
# name = it.__next__()
# print(name)
# except StopIteration: # 拿完了
# break
考试题,重点
user_list=[
{"name": "alex", "hobby": "抽烟"},
{"name": "alex", "hobby": "喝酒"},
{"name": "alex", "hobby": "烫头"},
{"name": "wusir", "hobby": "喊麦"},
{"name": "wusir", "hobby": "街舞"},
{"name": "alex", "hobby": "泡吧"},
{"name":"太白", "hobby":"开车"}
]
# [{"name": "alex", "hobby_list": ["抽烟","喝酒","烫头","泡吧"]},{"name": "wusir", "hobby_list": ["喊麦", "街舞"]},]
result = [] # {'name': 'alex', 'hobby_list': ['抽烟']}
for user in user_list:
# 1.判断是否在result里面存在了这个人, 如果存在. 把hobby_list添加一个hobby
# 2.不存在. 创建一个新字典
for new_user in result:
if user['name'] == new_user['name']:
new_user['hobby_list'].append(user['hobby'])
break
else:
dic = {}
dic["name"] = user['name']
dic['hobby_list'] = [user['hobby']]
result.append(dic)
print(result)
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Python学习日记(十) 生成器和迭代器 2019-08-13
- fetchone函数和fetchall函数返回值的区别 2019-08-13
- Python之装饰器笔记 2019-08-13
- Python学习日记(九) 装饰器函数 2019-08-13
- python之函数、面向对象 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash