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}
    '''
  • 相关阅读:
    hdu 3342 Legal or Not 拓排序
    hdu 1596 find the safest road Dijkstra
    hdu 1874 畅通工程续 Dijkstra
    poj 2676 sudoku dfs
    poj 2251 BFS
    poj Prime Path BFS
    poj 3278 BFS
    poj 2387 Dijkstra 模板
    poj 3083 DFS 和BFS
    poj 1062 昂贵的聘礼 dijkstra
  • 原文地址:https://www.cnblogs.com/scheduled/p/13837394.html
Copyright © 2011-2022 走看看