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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

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

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

    • 三元表達式
    • 列表解析
    • 生成器表達式

三元表達式

在作簡單的判斷時,三元表達式能簡化代碼:

def max(x, y):if x > y:return xelse:return y # 這個函數(shù)可以簡化為如下形式: def max_new(x,y):return x if x > y else y

格式:x if 條件 else y 如果條件成立,返回x, 否則返回y

列表解析

列表解析也是三元表達式,方便我們從一個序列生成另一個序列。
基本格式如下:

舉幾個栗子:

s = 'hello' l =[x.upper() for x in s] print(l) # 打印結果如下: ['H', 'E', 'L', 'L', 'O']list = [1,3,59,45,60] l_new = [x for x in list if x > 50] print(l_new) # 打印結果如下: [59, 60]

在具體應用時,應該先寫出上圖中的基本結構,有時輸出表達式可以寫的很復雜,輸入序列也可以嵌套,if判斷中也可以嵌套 for i in 比如下面這個栗子:

# 文件a.txt內(nèi)容 # apple 10 3 # tesla 100000 1 # mac 3000 2 # lenovo 30000 3 # chicken 10 3 # 要求使用列表解析,從文件a.txt中取出每一行,做成下述格式 # [{‘name’:'apple','price':10,'count':3},{...},{...},...]file = r'D:\Pythonworks\homework\170616函數(shù)列表解析\a.txt' with open(file,encoding='utf-8')as f:print([{'name': line.strip().split(' ')[0],\'price':line.strip().split(' ')[1], \'count': line.strip().split(' ')[2]}for line in f]) # 分析題目可以發(fā)現(xiàn),輸出表達式是字典元素,輸入序列是文件的一行,那先把基本的形式寫出來: # [{'name':X, 'price': X, 'count': X} for line in f] # 然后再從line中分解出X# 方法二: with open(file,encoding='utf-8')as f:print([{'name':i[0],'price':i[1],'count':i[2]}for i in [line.strip().split(' ') for line in f]]) # 1 strip()是去掉字符串前后的空格和換行符。字符串內(nèi)的空格也是字符! # 2 with open() as f: 語句的自動關閉文件功能,是指出了with的縮進,就關閉。 # 3 上面這個嵌套了兩個列表解析。最后一個列表,是最終列表的輸入序列。

生成器表達式

同列表解析一樣,只需要把 [] 換成 () 就可以得到一個生成器。

總結

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。