zoukankan      html  css  js  c++  java
  • python:列表推导式

    python中有种独特的语法:推导式,可以将代码压缩到1行,但是不使用也不影响。

    有三种:列表、字典、集合(注意没有元组推导式)

    列表推导式

    # 1、一行代码实现1—100之和(知识点:列表推导式)
    print(sum([x for x in range(1, 101)]))
    # 解释:
    # 列表推导式语句用[]包围,[]中先执行for循环语句,将每次循环取得的值再执行for语句之前的表达式,然后将结果放入列表中,相当于如下语句
    li = []
    for x in range(1, 101):
        li.append(x)
    print(li)
    print(sum(li))
    # 列表推导式还支持更复杂的语句,核心是用[]将生成列表的逻辑封装起来
    # 求1-100之内能被4整除,但是不能被5整除的所有数
    print([x for x in range(1, 101) if x % 4 == 0 and x % 5 != 0])
    # 多重循环,先执行一次外层循环,再循环内层遍历所有元素
    li = [a + b for a in '123' for b in 'abc']
    # 输出
    ['1a', '1b', '1c', '2a', '2b', '2c', '3a', '3b', '3c']
    
    # 更多用法
    li2 = [k+':'+v for k, v in {'name': 'kobe', 'age': '41'}.items()]
    # 输出
    ['age:41', 'name:kobe']
    
    # 问题:有两个列表a和b,找出在a中但不在b中的元素(a有b没有),在a和b中都存在的元素(ab都有),a和b中不同的元素(a有b没有,b有a没有)
    a = [1, 2, 3, 4, 5]
    b = [3, 4, 5, 6, 7]
    # 在a中但不在b中的元素(a有b没有)
    li1 = [x for x in a if x not in b]
    print(li1)
    # 在a和b中都存在的元素(ab都有)
    li2 = [x for x in a if x in b]
    print(li2)
    # a和b中不同的元素(a有b没有,b有a没有)
    li3 = [x for x in a+b if x not in li2]
    print(li3)

    字典推导式

    # 字典推导式(用花括号{}包围起来)
    dict = {x: x*x for x in [1, 2, 3]}
    # 输出
    {1: 1, 2: 4, 3: 9}

    集合推导式

    # 集合推导式(也是用花括号包围,和字典推导式区别只是在for语句的前面表达式不一样,没有:)
    s = {x for x in 'agjsgnjkjg' if x not in 'sgjkajhag'}
    print(type(s))

    元素推导式(没有)

    # 元组推导式????(既然列表推导式用[],字典和集合推导式用{},那元组推导式当然用()了)
    # 对不起么有元组推导式,圆括号在Python中被用作生成器的语法了
    tup = (x for x in [1,2,3])
    print(type(tup))
    # 输出:<class 'generator'>,可以看到是一个生成器
    # 如果非要按照上面的规律生成元组,需要显式的调用元组转换函数tuple()
    tup = tuple((x for x in [1,2,3]))
    print(tup)
    print(type(tup))
    # 输出:
    # (1, 2, 3)
    # <class 'tuple'>
  • 相关阅读:
    【Linux笔记】Linux目录结构
    《Effective C#》快速笔记(五)-
    《Effective C#》快速笔记(四)- 使用框架
    《Effective C#》快速笔记(三)- 使用 C# 表达设计
    《Effective C#》快速笔记(二)- .NET 资源托管
    《Effective C#》快速笔记(一)- C# 语言习惯
    Visual Studio 数据库架构比较
    C# 反射与dynamic最佳组合
    C# 调用WebApi
    基于微软开发平台构建和使用私有NuGet托管库
  • 原文地址:https://www.cnblogs.com/gcgc/p/11589186.html
Copyright © 2011-2022 走看看