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绘制柱形图的方法

    python绘制柱形图的方法

    这篇文章主要为大家详细介绍了python绘制柱形图的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Pytorch阅读文档中的flatten函数

    Pytorch阅读文档中的flatten函数

    PyTorch提供了一个非常方便的函数flatten()来完成这个任务,本文将介绍Pytorch阅读文档中的flatten函数,并提供一些示例代码,感兴趣的朋友一起看看吧
    2023-11-11
  • python中opencv Canny边缘检测

    python中opencv Canny边缘检测

    这篇文章主要介绍了python中opencv Canny边缘检测,Canny边缘检测是一种使用多级边缘检测算法检测边缘的方法。OpenCV提供了函数cv2.Canny()实现Canny边缘检测。更多相关内容需要的小伙伴可以参考下面文章内容
    2022-06-06
  • python实现bucket排序算法实例分析

    python实现bucket排序算法实例分析

    这篇文章主要介绍了python实现bucket排序算法,实例分析了Python排序的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-05-05
  • pycharm安装及如何导入numpy

    pycharm安装及如何导入numpy

    这篇文章主要介绍了pycharm安装及如何导入numpy,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Python实现基于权重的随机数2种方法

    Python实现基于权重的随机数2种方法

    这篇文章主要介绍了Python实现基于权重的随机数2种方法,本文直接给出实现代码,需要的朋友可以参考下
    2015-04-04
  • Python matplotlib可视化之绘制韦恩图

    Python matplotlib可视化之绘制韦恩图

    韦恩图可以清晰的反映不同组数据共有和各自独有的部分,本文将详细为大家介绍如下两种python绘制venn图策略:matplotlib_venn和pyvenn,需要的可以参考一下
    2022-02-02
  • 利用Python实现sqlite3增删改查的封装

    利用Python实现sqlite3增删改查的封装

    在一些小的应用中,难免会用到数据库,Sqlite数据库以其小巧轻便,无需安装,移植性好著称,下面这篇文章主要给大家介绍了关于利用Python实现sqlite3增删改查的封装,需要的朋友可以参考下
    2021-12-12
  • Python标准库之typing的用法(类型标注)

    Python标准库之typing的用法(类型标注)

    这篇文章主要介绍了Python标准库之typing的用法(类型标注),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • python获取程序执行文件路径的方法(推荐)

    python获取程序执行文件路径的方法(推荐)

    下面小编就为大家分享一篇python获取程序执行文件路径的方法(推荐),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04

最新评论