zoukankan      html  css  js  c++  java
  • 学习python的day8之推导式

    推导式(生成式)

    只有列表,集合,字典有推导式

    一、列表推导式

    创建一个0-10的列表

    while循环实现

    list1 = []
    i = 0
    while i<10:
        list1.append(i)
        i += 1
    print(list1)

    for循环实现

    list1 = []
    for i in range(10):
        list1.append(i)
    print(list1)

    列表推导式实现

    list1 = [i for i in range(10)]
    print(list1)

    需求:创建0-10偶数的列表

    range()实现

    list1 = [i for i in range(0,10,2)]
    print(list1)

    if条件控制

    list1 = [i for i in range(10) if i % 2 == 0]
    print(list1)

    多个for循环列表推导式(相当于for嵌套循环)

    需求:生成列表:[(1,0), (1,1), (1,2), (2,0), (2,1), (2,2)]

    list1 = [(i,j) for i in range(1,3) for j in range(3)]
    print(list1)
    '''
    输出:
    [(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
    '''

    二、字典推导式

    作用:快速合并列表为字典或提取字典中的目标数据。

    需求:创建字典key是1-5,value是对应的key的2次方

    dict = {i:i**2 for i in range(1,5)}
    print(dict)
    '''
    输出:
    {1: 1, 2: 4, 3: 9, 4: 16}
    '''

    需求:合并下列两个列表为字典

    list1 = ['name', 'age', 'gender']
    list2 = ['as_scheduled', 19, '男']
    list1 = ['name', 'age', 'gender']
    list2 = ['as_scheduled', 19, '']
    dict2 = {list1[i]:list2[i] for i in range(len(list1))}
    print(dict2)
    '''
    输出:
    {'name': 'as_scheduled', 'age': 19, 'gender': '男'}
    '''

    注意:当两个列表中元素个数不一样时,需要获取元素个数少的列表的长度,获取元素个数多的列表的长度,程序会报错。

    提取字典中的目标数据

    需求:提取value大于100的数据

    dict1 = {'A':150, 'B':89, 'C':261, 'D':92}
    dict2 = {key:value for key,value in dict1.items() if value >100}
    print(dict2)
    '''
    输出:
    {'A': 150, 'C': 261}
    '''

    三、集合

    需求:创建一个集合,是列表[1,1,2,3]的二次方

    list1 = [1, 1, 2, 3, 4]
    set1 = {i**2 for i in list1}
    print(set1)
    '''
    输出:
    {16, 1, 4, 9}
    '''
  • 相关阅读:
    Maven介绍
    自考:计算机网络原理 2018版 李全龙 课后习题答案
    jmeter分布式部署遇到的坑
    mysql循环 insert插入多条数据
    认识Nacos.
    mysql中where子句中使用别名查询出现问题
    python之bytes和string相互转换
    什么叫线圈?什么寄存器?什么叫保持寄存器?
    Modbus-RTU详解(转载)
    python进制之间的转换函数
  • 原文地址:https://www.cnblogs.com/scheduled/p/13837394.html
Copyright © 2011-2022 走看看