zoukankan      html  css  js  c++  java
  • 列表生成式&三元表达式

    列表生成式: 用于生成一个新的列表,是Python内置的一种极其强大的生成list的表达式。
    一、语法格式:[exp for iter_var in iterable]

    工作过程:

    (1)迭代iterable中的每个元素;

    (2)每次迭代都先把结果赋值给iter_var,然后通过exp得到一个新的计算值;

    (3)最后把所有通过exp得到的计算值以一个新列表的形式返回。

    例如:

    L=[i for i in range(10)]
    print(L)#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    
    R=[]
    for a in range(10):
        R.append(a)
    print(R)#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

    二、嵌套if语句:[exp for iter_var in iterable if_exp]

    工作过程:

    (1)迭代iterable中的每个元素,每次迭代都先判断if_exp表达式结果为真,如果为真则进行下一步,如果为假则进行下一次迭代;

    (2)把迭代结果赋值给iter_var,然后通过exp得到一个新的计算值;

    (3)最后把所有通过exp得到的计算值以一个新列表的形式返回。

    res=[x for x in range(1,10) if x%2==0]
    print(res)#[2, 4, 6, 8]
    res=[x*x for x in range(1,10) if x%2==0]
    print(res)#[4, 16, 36, 64]

    三、循环嵌套语法格式:[exp for iter_var_A in iterable_A for iter_var_B in iterable_B]

    工作过程:每迭代iterable_A中的一个元素,就把ierable_B中的所有元素都迭代一遍。

    res= [(x, y) for x in range(3) for y in range(4)]
    print(res)#[(0, 0), (0, 1), (0, 2), (0, 3), (1, 0), (1, 1), (1, 2), (1, 3), (2, 0), (2, 1), (2, 2), (2, 3)]
    res=[ x+y for x in range(3) for y in range(4)]
    print(res)#[0, 1, 2, 3, 1, 2, 3, 4, 2, 3, 4, 5]

    四、循环嵌套加判断

    res=[m + n for m in range(1,10) for n in range(1,5) if m%2==0]
    print(res)#[3, 4, 5, 6, 5, 6, 7, 8, 7, 8, 9, 10, 9, 10, 11, 12]

    备注:[]与()的区别

    l1 = [ i  for i in range(1,20,2) ]  #生成100以内的奇数,以空间换时间
    print(l1)  #[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
    l2 = ( i  for i in range(1,20,2) )  #生成100以内的奇数 #
    print(l2)  #<generator object <genexpr> at 0x0000000002255410>
    
     #外面是小括号的话,它就不是一个list了,它是一个生成器,
     #生成器比list要节省内存,它是每次循环的时候,会根据规则计算一个元素,放到内存里面
     #list它是把所有的元素都放在内存里面的

    小练习:

    #res = ['HWt' , 'Python' ,456, 'Random' , 'BEST' , 123] ,将list中得大写字符转为小写:
    res = ['HWt' , 'Python' ,456, 'Random' , 'BEST' , 123]
    print([s.lower() if isinstance(s , str) else s for s in res ]  )#['hwt', 'python', 456, 'random', 'best', 123]

    三元表达式:if...else 三元表达式: 可以简化分支判断语句,如 x = y.lower() if isinstance(y, str) else y

    # c = a if a > b else b  # 如果a大于b的话,c=a,否则c = b ,如果不用三元运算符的话,就得下面这么写
    if a > b:
        c = a
    else:
        c = b
    
    c = a if a > b else b  #三元表达式

    Python之列表生成式、生成器、可迭代对象与迭代器:https://www.cnblogs.com/yyds/p/6281453.html

     
  • 相关阅读:
    shell脚本-编程前奏-bash特性
    shell脚本-编程前奏-小工具之tr(文本处理)
    shell脚本-编程前奏-小工具之paste(文本处理)
    shell脚本-编程前奏-小工具之diff(文本处理)
    一键关闭-445端口脚本
    shell脚本-编程前奏-小工具之tee(文本处理)
    shell脚本-编程前奏-小工具之uniq(文本处理)
    shell脚本-编程前奏-小工具之sort(文本处理)
    shell脚本-编程前奏-小工具之cut(文本处理)
    27 复习素数,输入任多个数,求其中的素
  • 原文地址:https://www.cnblogs.com/hwtfamily/p/8981532.html
Copyright © 2011-2022 走看看