zoukankan      html  css  js  c++  java
  • 迭代器,函数的闭包

    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 " % (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)

  • 相关阅读:
    王颖奇 201771010129《面向对象程序设计(java)》第七周学习总结
    王颖奇 201771010129《面向对象程序设计(java)》第六周学习总结
    王颖奇 201771010129《面向对象程序设计(java)》第四周学习总结
    王颖奇 201771010129 第三周 Java基本程序设计总结
    《三带一队》【Alpha】Scrum meeting 3
    《三带一队》【Alpha】Scrum meeting 2
    《三带一队》【Alpha】Scrum meeting 1
    三带一队 实验八 团队作业4:团队项目需求建模与系统设计
    三带一队 实验七 团队作业3:团队项目需求分析与原型设计
    三带一队 实验六团队作业2:麋鹿寻途
  • 原文地址:https://www.cnblogs.com/songhuasheng/p/9325267.html
Copyright © 2011-2022 走看看