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
  • 相关阅读:
    C# WinForm API 改进单实例运行
    CF1310D Tourism [随机化]
    CF1311E Construct the Binary Tree
    [IOI2018] werewolf 狼人 [kruskal重构树+主席树]
    #6029. 「雅礼集训 2017 Day1」市场 [线段树]
    P5840 [COCI2015]Divljak [AC自动机,链并]
    CF547E Mike and Friends [AC自动机,离线树状数组]
    P5112 FZOUTSY
    CF 150E Freezing with Style [长链剖分,线段树]
    CF1230E Kamil and Making a Stream
  • 原文地址:https://www.cnblogs.com/bigtreei/p/14207944.html
Copyright © 2011-2022 走看看