python中的条件赋值判断语句语法

 更新时间:2023年08月11日 11:45:42   作者:Gruce_L、จุ๊บ  
这篇文章主要介绍了python条件赋值判断语句语法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

python条件赋值判断语句语法

if - elif - else 语句

如果是普通的三元,if else正常的语句看起来会有些冗余,所以下面有三种写法:

1、c = [a, b] [a > b]​

如果a > b为false, 那么就输出a,否则就输出b

2、天平式写法

c = a if a > b else b

如果a > b 为真,则输出a,否则输出b

eg:

summary = content[:100] if item[‘is_html'] else “”

3、赋值语句类似于条件判断语句

(c = a > b and [a] for [b])[0]​

a为假的时候,会输出b,当把a变成列表形态[a]时候,可以排除例外,就是当列表怨怒为空时

eg:

summary = item[‘is_html'] and content[:100] or “”

python条件赋值问题

有条件赋值语句

假设有列表 buf = [[1], [2], [5], None, [], [7], ()] ,求buf内的数的和

这样有三种解决办法

sum_buf = 0
for i in buf:
    if i is not None:
        sum_buf += i[0]
sum_buf = 0:
    for i in buf:
        sum_buf += i[0] if i else 0
sum_buf = sum([i[0] for i in buf if i])

显然第三种用列表推导是最简洁的,但不适用于循环体内操作过于复杂的情况。

这时候第二种带if语句的赋值就更有效,既增加了程序的可读性又没有独立于循环体外增加复杂度

带if语句的赋值

最有代表性的应用场景是做对象操作而不确定变量名是否贴在目标对象上的时候,比如上例中的 None [] () 都是不能做索引操作的

None 、空列表、空元组、空字符串、0的bool值都是False,类通过支持 __bool__ 方法就可以使类支持bool运算;从而支持if、while、and等语句

buf = []
a = buf.pop() if buf else 0
# 这里a=0
# 做buf.pop()操作前先进行if判断

实际对比

做完leetcode(2)题,在解题里看到的这种赋值方式,用基本相同的思路,如果用这种方式,可读性和效率会有质的飞跃

不用:

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None
class Solution(object):
    def addTwoNumbers(self, l1, l2):
        """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """
        flag = False
        res = ListNode(0)
        _res = res
        while True:
            if l1 is None and l2 is None:
                if flag is 0:
                    p.next = None
                else:
                    _res.val += flag
                return res
            elif l1 is None:
                val, flag = self.__add(l2.val, flag)
                _res.val += val
                _res.next = ListNode(0)
                p = _res
                _res, l2 = _res.next, l2.next
            elif l2 is None:
                val, flag = self.__add(l1.val, flag)
                _res.val += val
                _res.next = ListNode(0)
                p = _res
                _res, l1 = _res.next, l1.next
            else:
                val, flag = self.__add(l1.val, l2.val, flag)
                _res.val += val
                _res.next = ListNode(0)
                p = _res
                _res, l1, l2 = _res.next, l1.next, l2.next
    def __add(self, *args):
        add = sum(args)
        carry = add//10
        return add-10*carry, carry

用带if语句的赋值:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
class Solution:
    def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
        dummy = p = ListNode(None)
        s = 0
        while l1 or l2 or s:
            s += (l1.val if l1 else 0) + (l2.val if l2 else 0)
            p.next = ListNode(s % 10)
            p = p.next
            s //= 10
            l1 = l1.next if l1 else None
            l2 = l2.next if l2 else None
        return dummy.next

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • python的time模块和datetime模块实例解析

    python的time模块和datetime模块实例解析

    这篇文章主要介绍了python的time模块和datetime模块实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • python Tornado框架的使用示例

    python Tornado框架的使用示例

    这篇文章主要介绍了python Tornado框架的使用示例,帮助大家更好的利用python进行web开发,感兴趣的朋友可以了解下
    2020-10-10
  • python买卖股票的最佳时机(基于贪心/蛮力算法)

    python买卖股票的最佳时机(基于贪心/蛮力算法)

    这篇文章主要介绍了python买卖股票的最佳时机(基于贪心/蛮力算法),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • 基于Python实现一个条形码检测算法

    基于Python实现一个条形码检测算法

    条形码识别是计算机视觉中的常见任务,下面我将介绍如何使用Python和深度学习框架实现一个高效的条形码识别解决方案,有需要的小伙伴可以了解下
    2025-12-12
  • 用Python简单实现个贪吃蛇小游戏(保姆级教程)

    用Python简单实现个贪吃蛇小游戏(保姆级教程)

    本文基于Windows环境开发,适合Python新手,文中有非常详细的代码示例,对正在学习python的小伙伴们很有帮助,需要的朋友可以参考下
    2021-06-06
  • Python中实现对list做减法操作介绍

    Python中实现对list做减法操作介绍

    这篇文章主要介绍了Python中实现对list做减法操作介绍,需要的朋友可以参考下
    2015-01-01
  • Python下rrdtool模块的基本使用方法

    Python下rrdtool模块的基本使用方法

    这篇文章主要介绍了Python下rrdtool模块的基本使用方法,经常被用来做数据可视化的相关功能,需要的朋友可以参考下
    2015-11-11
  • python实现杨辉三角思路

    python实现杨辉三角思路

    本文给大家分享的是作者使用python实现杨辉三角的思路,非常的实用,有需要的小伙伴可以参考下
    2017-07-07
  • python的特殊语法和常用模块示例详解

    python的特殊语法和常用模块示例详解

    Python确实支持函数式编程,并提供了一些内置的高阶函数,这些函数可以接受其他函数作为参数,从而使代码更加简洁和功能强大,这篇文章主要介绍了python的特殊语法和常用模块详解,需要的朋友可以参考下
    2024-08-08
  • Python实现自动玩贪吃蛇程序

    Python实现自动玩贪吃蛇程序

    这篇文章主要介绍了通过Python实现的简易的自动玩贪吃蛇游戏的小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学一学
    2022-01-01

最新评论