• 一行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
  • 相关阅读:
    大型网站的数据库分割问题。
    大型网站的数据库分割问题。
    分布式集群的Session问题
    大型网站架构设计摘要
    大型网站的架构概要
    公司产品的优势
    java.util.concurrent 学习笔记(2) 线程池基础
    《Java 7 并发编程指南》学习概要 (6) Fork/Join
    《Java 7 并发编程指南》学习概要 (5) 线程池
    《Java 7 并发编程指南》学习概要 (4) 并发集合
  • 原文地址:https://www.cnblogs.com/bigtreei/p/14207944.html
Copyright © 2020-2023  润新知