三元表达式列表解析生成器表达式
生活随笔
收集整理的這篇文章主要介紹了
三元表达式列表解析生成器表达式
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
- 三元表達(dá)式
- 列表解析
- 生成器表達(dá)式
三元表達(dá)式
在作簡(jiǎn)單的判斷時(shí),三元表達(dá)式能簡(jiǎn)化代碼:
def max(x, y):if x > y:return xelse:return y # 這個(gè)函數(shù)可以簡(jiǎn)化為如下形式: def max_new(x,y):return x if x > y else y格式:x if 條件 else y 如果條件成立,返回x, 否則返回y
列表解析
列表解析也是三元表達(dá)式,方便我們從一個(gè)序列生成另一個(gè)序列。
基本格式如下:
舉幾個(gè)栗子:
s = 'hello' l =[x.upper() for x in s] print(l) # 打印結(jié)果如下: ['H', 'E', 'L', 'L', 'O']list = [1,3,59,45,60] l_new = [x for x in list if x > 50] print(l_new) # 打印結(jié)果如下: [59, 60]在具體應(yīng)用時(shí),應(yīng)該先寫(xiě)出上圖中的基本結(jié)構(gòu),有時(shí)輸出表達(dá)式可以寫(xiě)的很復(fù)雜,輸入序列也可以嵌套,if判斷中也可以嵌套 for i in 比如下面這個(gè)栗子:
# 文件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),輸出表達(dá)式是字典元素,輸入序列是文件的一行,那先把基本的形式寫(xiě)出來(lái): # [{'name':X, 'price': X, 'count': X} for line in f] # 然后再?gòu)膌ine中分解出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: 語(yǔ)句的自動(dòng)關(guān)閉文件功能,是指出了with的縮進(jìn),就關(guān)閉。 # 3 上面這個(gè)嵌套了兩個(gè)列表解析。最后一個(gè)列表,是最終列表的輸入序列。生成器表達(dá)式
同列表解析一樣,只需要把 [] 換成 () 就可以得到一個(gè)生成器。
總結(jié)
以上是生活随笔為你收集整理的三元表达式列表解析生成器表达式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Centos6.5_x86_64 编译安
- 下一篇: 你在看Netflix,Netflix也在