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
  • 相关阅读:
    网络基础 | 等长子网划分概述
    python学习笔记(六)——异常处理
    python模块 | 随机数模块—random模块
    python模块 | 时间处理模块—datetime模块
    python学习笔记(五)——模块导入
    思科计算机网络 | 第一章路由器概念测试题(一)
    kali Linux 渗透测试 | ettercap图形界面(ARP 欺骗 + DNS欺骗)
    单例模式 | C++ | Singleton模式
    思科网络学习笔记 | 路由概念
    python学习笔记(五)——静态方法、类方法、运算符重载
  • 原文地址:https://www.cnblogs.com/bigtreei/p/14207944.html
Copyright © 2011-2022 走看看