最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python中的條件賦值判斷語句語法

 更新時(shí)間:2023年08月11日 11:45:42   作者:Gruce_L、????  
這篇文章主要介紹了python條件賦值判斷語句語法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

python條件賦值判斷語句語法

if - elif - else 語句

如果是普通的三元,if else正常的語句看起來會(huì)有些冗余,所以下面有三種寫法:

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為假的時(shí)候,會(huì)輸出b,當(dāng)把a(bǔ)變成列表形態(tài)[a]時(shí)候,可以排除例外,就是當(dāng)列表怨怒為空時(shí)

eg:

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

python條件賦值問題

有條件賦值語句

假設(shè)有列表 buf = [[1], [2], [5], None, [], [7], ()] ,求buf內(nèi)的數(shù)的和

這樣有三種解決辦法

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])

顯然第三種用列表推導(dǎo)是最簡潔的,但不適用于循環(huán)體內(nèi)操作過于復(fù)雜的情況。

這時(shí)候第二種帶if語句的賦值就更有效,既增加了程序的可讀性又沒有獨(dú)立于循環(huán)體外增加復(fù)雜度

帶if語句的賦值

最有代表性的應(yīng)用場景是做對(duì)象操作而不確定變量名是否貼在目標(biāo)對(duì)象上的時(shí)候,比如上例中的 None [] 、 () 都是不能做索引操作的

None 、空列表、空元組、空字符串、0的bool值都是False,類通過支持 __bool__ 方法就可以使類支持bool運(yùn)算;從而支持if、while、and等語句

buf = []
a = buf.pop() if buf else 0
# 這里a=0
# 做buf.pop()操作前先進(jìn)行if判斷

實(shí)際對(duì)比

做完leetcode(2)題,在解題里看到的這種賦值方式,用基本相同的思路,如果用這種方式,可讀性和效率會(huì)有質(zhì)的飛躍

不用:

# 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

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

赤水市| 菏泽市| 上杭县| 顺义区| 沁阳市| 仁寿县| 定襄县| 宜兴市| 淳安县| 沈阳市| 岳西县| 台湾省| 临沧市| 甘德县| 阜城县| 左云县| 河西区| 彭州市| 鲜城| 舟曲县| 武汉市| 桐城市| 黔东| 闸北区| 竹北市| 南皮县| 深圳市| 丰县| 瓮安县| 句容市| 曲水县| 沭阳县| 石渠县| 务川| 淮阳县| 阿勒泰市| 丰原市| 荣昌县| 惠来县| 肇源县| 黄浦区|