zoukankan      html  css  js  c++  java
  • 一行Python代码实现for循环和if else判断

    Outline

    平时写if判断和for循环都是中规中矩,按常规套路来,但今天同事问我这方面的东西给;

    把他for循环+if else判断改成了一行。

    改完之后代码看起来更优雅了 哈哈哈 

    需求

    假设有这么个需求:

    判断一个可迭代对象中的元素是否以字母 “s” 结尾;

    1. 以 “s” 结尾,则保留这个元素
    2. 不以 “s” 结尾,则把这个元素替换为 666

    实现

    首先要for循环遍历这个可迭代对象,然后对每次迭代的元素进行判断,看是否以“s”结尾;

    常规解法:

    def is_endwith_s(n):
        """
        判断是否以s结尾
        :param n: str or int
        :return: bool
        """
        return str(n).endswith('s')
    
    
    # 待判断的可迭代对象
    lis = ['ss', 'ss', 'ss', 'aa', 'aa', 'ss', 'ss', 'ss', 'ss', '22']
    lis_s = []
    
    for i in lis:
        if is_endwith_s(i):
            lis_s.append(i)
    
    print(lis_s)
    
    # ['ss', 'ss', 'ss', 'ss', 'ss', 'ss', 'ss']
    保留以s结尾的
    def is_endwith_s(n):
        """
        判断是否以s结尾
        :param n: str or int
        :return: bool
        """
        return str(n).endswith('s')
    
    
    # 待判断的可迭代对象
    lis = ['ss', 'ss', 'ss', 'aa', 'aa', 'ss', 'ss', 'ss', 'ss', '22']
    lis_s = []
    
    for i in lis:
        if is_endwith_s(i):
            lis_s.append(i)
        else:
            lis_s.append(666)
    
    print(lis_s)
    
    # ['ss', 'ss', 'ss', 666, 666, 'ss', 'ss', 'ss', 'ss', 666]
    保留以s结尾的,不是s结尾替换为66

    for循环+ if else 一行实现:

    def is_endwith_s(n):
        """
        判断是否以s结尾
        :param n: str or int
        :return: bool
        """
        return str(n).endswith('s')
    
    
    # 待判断的可迭代对象
    lis = ['ss', 'ss', 'ss', 'aa', 'aa', 'ss', 'ss', 'ss', 'ss', '22']
    
    lis_s = [word for word in lis if is_endwith_s(word)]
    print(lis_s)
    
    
    
    # ['ss', 'ss', 'ss', 'ss', 'ss', 'ss', 'ss']
    保留以s结尾的
    def is_endwith_s(n):
        """
        判断是否以s结尾
        :param n: str or int
        :return: bool
        """
        return str(n).endswith('s')
    
    
    # 待判断的可迭代对象
    lis = ['ss', 'ss', 'ss', 'aa', 'aa', 'ss', 'ss', 'ss', 'ss', '22']
    
    lis_s = [word if is_endwith_s(word) else '666' for word in lis]
    
    print(lis_s)
    
    
    # ['ss', 'ss', 'ss', '666', '666', 'ss', 'ss', 'ss', 'ss', '666']
    保留以s结尾的,不是s结尾替换为666
  • 相关阅读:
    HDU 4990 Reading comprehension(BestCoder Round #8)
    HDU 4985 Little Pony and Permutation(BestCoder Round #7)
    HDU 4983 Goffi and GCD(欧拉函数模板)
    CodeForces 590A Median Smoothing
    CodeForces 591B Rebranding
    LightOJ 1100
    Load average 负载详细解释
    Loadrunner 上传下载
    使用VisualVM远程监控JVM Linux服务器配置方法
    JVM调优(7)调优方法
  • 原文地址:https://www.cnblogs.com/bigtreei/p/14207944.html
Copyright © 2011-2022 走看看