三元表达式,列表解析和生成器表达式
生活随笔
收集整理的這篇文章主要介紹了
三元表达式,列表解析和生成器表达式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
三元表達式
在以前,在諸如比較兩個數大小的時候,通常的寫法都是下面的樣子
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)生成器表達式
列表解析得到的結果仍然是一個列表,列表解析的優點是:取值方便
缺點:很占系統資源,如果列表的長度較小時使用列表解析會很方便,但是如果列表的長度很大的時候,使用列表解析會占用很多的內存資源,此時可以使用生成器表達式來節省內存資源
來看下面的例子
得到的結果為
<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
總結
以上是生活随笔為你收集整理的三元表达式,列表解析和生成器表达式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 支付宝信用卡申请入口在哪里?申卡成功率高
- 下一篇: FZU OJ:2230 翻翻棋