• Python:enumerate函数、introspection对象自省、推导式(列表(list)推导式、字典(dict)推导式、集合(set)推导式)


    枚举(enumerate)是Python内置函数。它允许我们遍历数据并⾃动计数,例如下面这样:
    for counter, value in enumerate(some_list):
      print(counter, value)
    不只如此,enumerate也接受⼀些可选参数,这使它更有⽤。例如:
    for counter, value in enumerate(some_list,1): # 指定从1开始计数
     print(counter, value)
    还可以⽤来创建包含索引的元组列表。
    1 # 指定索引从 1 开始
    2 my_list = ['apple', 'banana', 'grapes', 'pear']
    3 for c, value in enumerate(my_list, 1):
    4     print(c, value)
    5 
    6 # 用来创建包含索引的元组列表
    7 counter_list = list(enumerate(my_list, 1))    # 生成一个元素索引数字和元素的元组列表
    8 print(counter_list)        # 输出:[(1, 'apple'), (2, 'banana'), (3, 'grapes'), (4, 'pear')]
    View Code
    ⾃省(introspection),在计算机编程领域⾥,是指在运⾏时来判断⼀个对象的类型的能⼒。
    它是Python的强项之⼀。Python中所有⼀切都是⼀个对象.
    下面介绍:dir,type和id,inspect砌块
     1 # dir⾃省的最重要的函数之⼀。它返回⼀个列表,列出了⼀个对象所拥有的属性和⽅法
     2 my_list = [1, 2, 3]
     3 print(dir(my_list))    # 输出 my_list 的所有⽅法的名字。不传入参数会返回当前作⽤域的所有名字
     4 other_list = ['Michael', 'Jack']
     5 my_list = my_list.__add__(other_list)    # 两个列表元素合并
     6 print(my_list)
     7 
     8 # type和id,type函数返回⼀个对象的类型。
     9 print(type(''))
    10 print(type([]))
    11 print(type({}))
    12 print(type(()))
    13 print(type(dict))
    14 print(type(3))
    15 
    16 # id()函数返回任意不同种类对象的唯⼀ID
    17 name = 'Michael'
    18 print("ID:", id(name))
    19 
    20 # inspect模块也提供了许多有⽤的函数,来获取活跃对象的信息。
    21 import inspect
    22 #print(inspect.getmembers(str))        # 查看一个对象的成员
    23 s = inspect.getmembers(str)            # 查看一个对象的成员,还有很多方法可以去试下
    24 for k in enumerate(s,1):
    25     print(k)
    推导式(又称解析式)是Python的⼀种独有特性;
    推导式是可以从⼀个数据序列构建另⼀个新的数据序列的结构体。
    共有三种推导,在Python2和3中都有⽀持:
    列表(list)推导式
    字典(dict)推导式
    集合(set)推导式

    列表推导式(又称列表解析式)提供了⼀种简明扼要的⽅法来创建列表。
    结构是在⼀个中括号⾥包含⼀个表达式,然后是⼀个for语句,然后是0个或多个for
    或者if语句。那个表达式可以是任意的,意思是你可以在列表中放⼊任意类型的对象。
    返回结果将是⼀个新的列表,在这个以if和for语句为上下⽂的表达式运⾏完成之后产⽣。
    语法:
    variable = [out_exp for out_exp in input_list if out_exp == 2]
    1 multiples = [ i for i in range(1,40) if i % 2 is 0]
    2 print(multiples)
    3 var = [ lambda x:x**2 for x in range(1,11) if x % 3 is 0]
    4 print(var[1](3))
    5 
    6 def haha(x):
    7     return {str(x): chr(x)}
    8 michaels = [ haha(x) for x in range(1,130)]
    9 print(michaels)
     
    字典推导式(dict comprehensions)
    字典推导和列表推导的使⽤⽅法是类似的
    mcase = {'a': 10, 'b': 34, 'A': 7, 'Z': 3}
    mcase_frequency = {
        k.lower(): mcase.get(k.lower(), 0) + mcase.get(k.upper(), 0)
        for k in mcase.keys()
    }
    # 使用字典的get方法获取键对应的值,没有找到用0替代
    # 在上⾯的例⼦中我们把同⼀个字母但不同⼤⼩写的值合并起来了。
    print(mcase_frequency)
    # 还可以快速对换⼀个字典的键和值
    dict1 = { v:k for k, v in mcase.items()}
    print(dict1)
     
    集合推导式(set comprehensions)
    它们跟列表推导式也是类似的。 唯⼀的区别在于它们使⽤⼤括号{}。
    注意:集合要去掉重复的元素,只保留1个
    squared = { x**2 for x in [1,1,2]}
    print(squared)
     
  • 相关阅读:
    python-json序列化和反序列化
    python-列表元祖字典集合、字符、字符串、函数处理
    Nmon监控服务端性能
    python-使用qq邮箱向163邮箱发送邮件、附件
    测试结论
    性能术语
    测试点-app、web、异常
    提测标准
    深度优先搜索的演示学习法——BlackBlank平台应用教学案例
    【赛后补题】ccpc2107秦皇岛H题
  • 原文地址:https://www.cnblogs.com/Micro0623/p/9951654.html
Copyright © 2020-2023  润新知