日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

            歡迎訪問 生活随笔!

            生活随笔

            當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

            编程问答

            三元表达式,列表解析和生成器表达式

            發布時間:2023/12/13 编程问答 27 豆豆
            生活随笔 收集整理的這篇文章主要介紹了 三元表达式,列表解析和生成器表达式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

            三元表達式

            在以前,在諸如比較兩個數大小的時候,通常的寫法都是下面的樣子

            if x > y:print("the max is x") else:print("the max is y")

            三元表達式的語法為:

            True if expression else False

            現在可以個體三元表達式來完成這種比較簡單的判斷

            res = x if x > y else y print(res)

            列表解析

            列表解析的語法格式為

            [ i操作 for i in 列表 if 表達式1 and 表達式2]
            • 其中if判斷語句是可選語句,可以對列表的元素進行操作

            現在有這樣一個需求,把一個數字列表中的每個值都取平方,把一個列表中的每個字符串都轉換為大寫形式

            可以這樣寫

            l1 = range(1, 10, 2) l2 = [] for i in l1:l2.append(i**2)l3 = ['python', 'linux', 'javascript', 'mysql'] l4 = [] for j in l3:j = j.upper()l4.append(j)print(l2) print(l4)

            那有沒有簡單的方式呢,可以使用列表解析,上面的例子則可以修改為

            l1 = range(1, 10, 2) l2 = [i**2 for i in l1]l3 = ['python', 'linux', 'javascript', 'mysql'] l4 = [j.upper() for j in l3]print(l2) print(l4)

            生成器表達式

            列表解析得到的結果仍然是一個列表,列表解析的優點是:取值方便
            缺點:很占系統資源,如果列表的長度較小時使用列表解析會很方便,但是如果列表的長度很大的時候,使用列表解析會占用很多的內存資源,此時可以使用生成器表達式來節省內存資源
            來看下面的例子

            res = ( i**2 for i in range(100)) print(res)

            得到的結果為

            <generator object <genexpr> at 0x0000000002DA1AF0>

            在上面的例子里,把列表解析表達式中的中括號換成小括號,那么表達式執行結果就變成了一個生成器

            我們知道,生成器的本質就是迭代器,所以上面的表達式執行的結果生成器,可以使用for 循環來取值

            res = ( i**2 for i in range(100))for i in res:print(i)

            轉載于:https://www.cnblogs.com/renpingsheng/p/8641989.html

            總結

            以上是生活随笔為你收集整理的三元表达式,列表解析和生成器表达式的全部內容,希望文章能夠幫你解決所遇到的問題。

            如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。