• Python【每日一问】04


    问:a =  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],求出列表a中所有奇数并构造新列表

    答:

    利用列表的元素下标遍历列表

    a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    # 创建一个空列表b
    b = []
    # 遍历列表的元素下标
    for i in range(0, len(a)):
        if a[i] % 2 == 1: # 判断是否是元素是否是奇数
            b.append(a[i]) # 使用 append()方法将符合条件的元素追加到列表b中
    print(b)

    直接遍历列表

    a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    # 创建一个空列表b
    b = []
    # 变量列表中的元素
    for i in a:
        if i % 2 == 1: # 判断元素是否是奇数
            b.append(i) # 使用 append()方法追加元素到b列表中
    print(b)

    列表推导式

    a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    b = [i for i in a if i % 2 == 1]

    【知识拓展】:Python推导式

    Python推导式是可以从一个数据序列构建另一个新的数据序列的结构体。 共有三种推导,在Python2和3中都有支持:

    (1)列表(list)推导式

    (2)字典(dict)推导式

    (3)集合(set)推导式

    1.语法格式

    (1)列表(list)推导式:

    variable = [out_exp_res for out_exp in input_list if out_exp == 2]
      out_exp_res:  列表生成元素表达式,可以是有返回值的函数。
      for out_exp in input_list:  迭代input_list将out_exp传入out_exp_res表达式中。
      if out_exp == 2:  根据条件过滤哪些值可以。

    简单点说就是:

    [表达式 for 变量 in 列表]    或者  [表达式 for 变量 in 列表 if 条件]

    (2)字典(dict)推导式:

    variable = {out_exp_res for out_exp in input_list if out_exp == 2}
      out_exp_res:  列表生成元素表达式,可以是有返回值的函数。
      for out_exp in input_list:  迭代input_list将out_exp传入out_exp_res表达式中。
      if out_exp == 2:  根据条件过滤哪些值可以。

    简单点说就是,

    {表达式 for 变量 in 字典}    或者  {表达式 for 变量 in 字典 if 条件}

    (3)集合(set)推导式

    variable = {out_exp_res for out_exp in input_list if out_exp == 2}
      out_exp_res:  列表生成元素表达式,可以是有返回值的函数。
      for out_exp in input_list:  迭代input_list将out_exp传入out_exp_res表达式中。
      if out_exp == 2:  根据条件过滤哪些值可以。

    简单点说就是,

    {表达式 for 变量 in 集合}    或者  {表达式 for 变量 in 集合 if 条件}

    2.举例说明

    (1)列表推导式

    需求:a = [1, 2, 3, 4, 5, 6, 7, 8, 9],求出列表a中>5的数的平方并构造新列表

    经典写法:

    a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    b = []
    for i in a:
        if i > 5:
            pass
            b.append(i**2)
    print(b)

    列表推导式写法:

    a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    print([i**2 for i in a if i > 5])

    (2)字典推导式

    需求:spc = ['name', 'city', 'favorite color'],spc_value = ['kangkang', 'ShenZhen', 'blue']

    将第一个列表 spc 中的元素作为键,第二个列表 spc_value 中的元素作为值生成新的字典

    经典写法:

    spc = ['name', 'city', 'favorite color']
    spc_value = ['kangkang', 'ShenZhen', 'blue']
    new_dict = {}
    
    for i, j in zip(spc, spc_value):
        new_dict[i] = j
    print(new_dict)

    字典推导式:

    spc = ['name', 'city', 'favorite color']
    spc_value = ['kangkang', 'ShenZhen', 'blue']
    
    new_dict = {}
    
    # zip()函数可以成对读取元素
    
    new_dict = {i: j for i, j in zip(spc, spc_value)}
    
    print(new_dict)

    如果想让 代码更加强健,可以判断 spc 中是否包含 name,不包含就不执行

    spc = ['name', 'city', 'favorite color']
    spc_value = ['kangkang', 'ShenZhen', 'blue']
    
    new_dict = {}
    
    # zip()函数可以成对读取元素
    
    new_dict = {i: j for i, j in zip(spc, spc_value) if not i == "name"}
    
    print(new_dict)

    (3)集合推导式

    需求:x = [1, 5, 2, 3, 4, 6, 7, 1, 9, 0],求出列表x中<5的数的立方并构造集合

    注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典

    经典写法:

    x = [1, 5, 2, 3, 4, 6, 7, 1, 9, 0]
    y = set()
    for i in x:
        if i < 4:
            y.add(i**3)
    print(y)

    集合推导式:

    x = [1, 5, 2, 3, 4, 6, 7, 1, 9, 0]
    print({i**3 for i in x if i < 4})
  • 相关阅读:
    第八章:Junit—— Eclipse 中 Junit 中的 webDriver 解压版
    第八章:Junit—— Eclipse 中 Junit 中的 webDriver 完整版
    第八章:Junit——在 Eclipse 中里面 导入 Junit 的 jar 包
    20135203齐岳信息安全系统设计基础——实验三实验报告
    20135203齐岳 信息安全系统设计基础第十二周实践总结
    20135203齐岳信息安全系统设计基础——实验二实验报告
    20135203齐岳 信息安全系统设计基础第十一周学习总结
    20135203齐岳信息安全系统设计基础——实验一实验报告
    20135203齐岳 信息安全系统设计基础第十周学习总结
    20135203齐岳 信息安全系统设计基础第九周学习总结
  • 原文地址:https://www.cnblogs.com/ElegantSmile/p/10704690.html
Copyright © 2020-2023  润新知