• Python 非空即真、列表生成式、三元表达式 day3


    一、非空即真:

    Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false

    1. 布尔型,False表示False,其他为True
    2. 整数和浮点数,0表示False,其他为True
    3. 字符串和类字符串类型(包括bytes和unicode),空字符串表示False,其他为True
    4. 序列类型(包括tuple,list,dict,set等),空表示False,非空表示True
    5. None永远表示False
    举例一:
    s = '' if s: print('走if') else: print("走else") #走else 举例二: username = input('username:') if username: print("用户名是%s"%username)#若输入名字则走if else: print("请输入用户名")#若不输入用户名则走else 举例三: a = 0 if a : print("go if") else: print("go else")#走else

    二、列表生成式:

    python里面[]表示一个列表,快速生成一个列表可以用range()函数来生成。
    对列表里面的数据进行运算和操作,生成新的列表最高效快速的办法,那就是列表生成式了。

     1、range()

    一个连续的数字类型列表,比如[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],可以用range生成

    b = range(1, 11)
    print(b)  # 结果 range(1, 11)python3直接打印b会显示range(1, 11)对象,并不是直接显示应该列表,如果想显示列表,可以用list()转下
    print(type(b))#结果<class 'range'>
    print(list(b)) # 转list ,输出结果为[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

    2、列表生成式

    (1).如果想对列表里面的数据进行运算后重新生成一个新的列表,如[11,22, 33 ... 1010],按平常思维就是先定义一个列表c,然后for循环挨个运算,算完了再append添加到c,最后c就是新的列表了

    # 对列表数平方
    
    b = range(1, 11)
    c = []
    for i in b:
        c.append(i*i)
    print(c)
    
    # 结果:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

    (2).接下来看看用列表生成式如何去实现

    # 对列表数平方
    
    b = range(1, 11)
    c = [x*x for x in b]
    print(c)
    
    # 结果:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

    (3).列表生成式语法是固定的,[]里面for 前面是对列表里面数据的运算操作,后面跟平常for循序一样遍历去读取。运行后会自动生成新的列表

    3、带if判断

    1.如果想对一个列表里面的数据筛选,比如:[1, 3, -3, 4, -2, 8, -7, 6],找出大于0的数,按正常思维可以for循环挨个判断,符合条件的放到新的列表

    c = [1, 3, -3, 4, -2, 8, -7, 6]
    d = []
    for i in c:
        if i > 0:
            d.append(i)  # 添加到列表d
    print(d)
    
    # 结果:[1, 3, 4, 8, 6]
    

    2.接下来可以看看列表生成式,写出更加简洁优雅的代码,快速高效!

    # 提取大于0的数
    c = [1, 3, -3, 4, -2, 8, -7, 6]
    d = [x for x in c if x > 0]
    print(d)
    
    # 运行结果[1, 3, 4, 8, 6]

    再举个例子:

    result3 = [str(i+1).zfill(2) for i in range(1,10)]
    print(result3)
    #拆开写等同于
    result4 = []
    for i in range(1,10):
        j = str(i+1).zfill(2)
        result4.append(j)
    print(result4) #打印结果['01', '02', '03', '04', '05', '06', '07', '08', '09']

    三、三元表达式

    Python没有三目运算符(?:),但有类似的替代方案,如下:
    为真时的结果 if 判定条件 else 为假时的结果

    举例:如果77大于66,输出100,否则输出99

    a = 100 if  77 > 66 else 99
    print(a) #打印结果为100
    #另一个例子:题目为判断给定身份证的性别
    #
    身份证第17位代表性别,男奇数,女偶数 id_card = '211105200103052312' if int(id_card[-2])%2 == 0: sex = '' else: sex = '' print(sex) #上面的代码等同于下面的代码 sex = '' if int(id_card[-2])%2 == 0 else '' ##先看if,如果if满足,则为if前面的值,否则取if后面的值 print(sex)
  • 相关阅读:
    matlab基本数据结构struct
    matlab基本函数strcmp num2str 字符串格式
    matlab基本函数inf, isempty, round, floor, fix
    matlab基本函数randperm end数组索引
    matlab基本函数find
    【未通过】LintCode #366 斐波纳契数列
    LintCode #3 统计数字
    计算1至n中数字X出现的次数
    LintCode #2 尾部的零
    LintCode #1 A + B 问题
  • 原文地址:https://www.cnblogs.com/candysalty/p/10980458.html
Copyright © 2020-2023  润新知