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

    一.列表推导式

    快速生成一个列表的表达式

    格式:[变量名 for 变量名 in 可迭代对象]

    小知识:如何判断一个对象是否可迭代?

    # 当我们使用for循环时,只要作用于一个可迭代对象,for循环就可以正常运行,而我们不太关心该对象究竟是list还是其他数据类型
    # 通过collections模块的Iterable类型判断
    from collections import Iterable
    print(isinstance('abc', Iterable)) # str是否可迭代
    
    输出结果如下
    True

    列表推导式

    # 创建一个包含0~9元素的列表,使用常见创建方式
    list1 = []
    for i in range(10):
        list1.append(i)
    print(list1)
    
    # 使用列表推导式
    list2 = [x for x in range(10)]
    print(list2)
    
    结果如下
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

    可以看到结果是相同的,但是使用列表推到式更简单,还可以使用如下格式

    list3 = [x for x in range(10)if x % 2 == 0]     # 借助if判断,但是不能使用else
    print(list3)
    
    list4 = [x*x for x in range(5)]         # x*x 为元素
    print(list4)
    
    list5 = [i+j for i in range(5) for j in range(5)]   # for双循环,也可以使用三循环
    print(list5)
    
    结果如下
    [0, 2, 4, 6, 8]
    [0, 1, 4, 9, 16]
    [0, 1, 2, 3, 4, 1, 2, 3, 4, 5, 2, 3, 4, 5, 6, 3, 4, 5, 6, 7, 4, 5, 6, 7, 8]

    二.字典推导式

    字典推导式和列表大致相同

    # 字典推导式
    dict1 = {k:v for k, v in {"name": "xiaoming", "age": 20}.items()}
    print(dict1)
    
    结果入下
    {'name': 'xiaoming', 'age': 20}

    三.元组生成式

    使用上面相同的方式生成元组,但是不能直接使用,需要遍历才能使用生成的元素

    # 元组生成式
    tuple1 = (x for x in range(10))
    print(tuple1)       # <generator object <genexpr> at 0x000001552182FF10>,不能直接使用
    for i in tuple1:
        print(i, end=" ")
    
    结果如下
    <generator object <genexpr> at 0x000001CAA042FFC0>
    0 1 2 3 4 5 6 7 8 9 
  • 相关阅读:
    JAVA学习---文件和流
    JAVA学习---集合和工具类
    JAVA学习---异常
    python-time模块
    python-并发编程
    python-网络编程
    python-并发编程之进程
    python-面向对象之多态
    python-面向对象之反射
    python-面向对象之封装
  • 原文地址:https://www.cnblogs.com/golinux/p/10794975.html
Copyright © 2011-2022 走看看