python中列表生成式strip_列表生成式|让你的代码简洁又美观
本文作者:陳丹慧,中南財經政法大學金融學院
文字編輯:任?哲
技術總編:張馨月
導讀
已知列表list1=[1,2,3,4,5,6,7,8,9,10],如果我們想把list1中每個元素都加上2010,生成一個新列表,該怎么做呢?
勤奮的小白會這樣做:
list1=list(range(1,11))
list2=[]
for i in list1:
list2.append(i+2010)
list2
image01.png
而用列表生成式(List Comprehensions)一行就能代替上述代碼:
[i+2010 for i in range(1,11)]
image02.png
是不是很神奇呢?一行代碼就創造了有規律的新列表,看起來就像一根藤上結出了果實。今天,我就來帶大家玩轉列表生成式,掌握列表生成式的更多用法。
1.語法
根據Python官方文檔的說明,列表生成式是一種簡便快捷地創造列表的方式。它通常是用來創建一個新列表,這個新列表的元素是在可迭代對象(包括字符串、元組、列表、字典、集合等可被for遍歷循環的對象)的基礎上生成的。
(1)基本語法
[exp for iter_var in iterable]
作用過程:迭代iterable中的元素,再根據表達式exp計算出一個新值,最后將所有計算出的新值放在列表中,就生成了一個新的列表。
剛剛在導讀中給大家展示了用列表生成式在list1的基礎上生成list2,這里再詳解一下它的作用過程:
[i+2010 for i in range(1,11)]
首先我們知道range(1,11)生成一個1到10的有序序列,它是可以被for遍歷循環的。第一輪時,賦值i=1,再根據"i+2010"算出新值"2011";第二輪時,賦值i=2,再根據表達式算出新值"2012"……最后一輪時,賦值i=10,根據表達式算出的新值為"2020"。這些新值會按照順序排列放在一個的新列表中被返回,即我們在導讀中看到的輸出結果。
(2)增加if語句過濾功能
[exp for iter_var in iterable if_exp]
作用過程:迭代iterable中每個元素,每次迭代都判斷下if_exp表達式是否為真,如果為True則執行下一步,將返回元素通過exp得到一個新值;如果為False,則丟棄該元素,進行下一次迭代。最后,所有通過exp計算出來的新值將以一個新列表的形式返回。
我們用它來實現以下功能:過濾原列表list3=[-4,-2,0,2,4]中的負數。
list3=[-4,-2,0,2,4]
list4=[]
#不用列表生成式
for x in list3:
if x>=0:
list4.append(x)
#使用列表生成式
list4=[x for x in list3 if x >=0]
list4
out3.png
(3)嵌套循環
[exp for iter_var_A in iterrable_A for iter_var_B in iterable_B]
作用過程:先迭代iterable_A中的元素,每當迭代一個iterable_A中的一個元素,隨之就會把iterable_B中每個元素都迭代一遍,最后根據表達式exp算出新值,并返回一個新列表。
乍一看,是不是頭皮發麻。不要怕,看了下面的例子你會豁然開朗。
給定list5=["星期","周"],list6=["一","二","三","四","五","六","七"],用列表生成式生成一個新列表list7,將新列表中元素為list5,list6對應位置元素相加,代碼如下:
list5=["星期","周"]
list6=["一","二","三","四","五","六","日"]
list7=[]
#不使用列表生成式
for i in list5:
for j in list6:
list7.append("%s"%i+"%s"%j)
#使用列表生成式
list7=["%s"%i+"%s"%j for i in list5 for j in list6]
list7
最后輸出結果如下:
out4.png
2.應用
(1)字典里的應用
列表生成式結合字典的items方法,可以生成鍵值對列表:
dict={"Jack":179,"Rose":172}
list=[k+"身高為"+str(v)+"cm" for k,v in dict.items()]
list
輸出結果如下:
out5.png
(2)批量去空格
結合字符串的strip方法來刪除原列表中所有字符串元素中的空白字符,生成一個新列表:
list=[' 爬蟲',' 俱','樂部 ']
[s.strip() for s in list2]
輸出結果如下:
out6.png
(3)輸出某個目錄下所有文件夾和文件名
結合os模塊,列表生成式能輸出某個目錄下所有文件夾和文件名
import os
[d for d in os.listdir("E:/Python/python基礎")]
輸出結果如下:
image23.png
今天的介紹就到這里了。希望大家能好好應用列表生成式,讓你的代碼簡潔又美觀!之后我們還會介紹更多有趣的知識,來幫你提升效率,敬請期待哦!
1ae8c76224e0e3302cd69df5cd8bb86.jpg
總結
以上是生活随笔為你收集整理的python中列表生成式strip_列表生成式|让你的代码简洁又美观的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql share 字体 中文_My
- 下一篇: python无法调用pygame,pyt