python基礎 列表推導式

2022-01-11 11:02:36 字數 2158 閱讀 1372

先說點廢話:

最開始我是通過一本書來入門python的:《head first python》

記得當時學完for迴圈後,書裡介紹了一種簡化**的方法,它可以通過一行**從乙個列表中取出資料然後追加到另乙個列表中,沒錯,就是列表推導式

不過當時學完後,一直沒想起來用,工作中遇到一些需要遍歷取數的情況,直接用for迴圈了,乙個不夠,就直接上倆~~

最近在寫指令碼的時候,因為又一直在用for迴圈,**看起來有點冗雜,所以突然想起來是不是可以用列表推導來代替

ok,廢話完畢,下面開始進入正題,了解一下列表推導到底是個什麼鬼?

1、建立乙個列表,然後使用for迴圈將該列表中的資料新增到另乙個列表中

heroes = ["

亞瑟", "

妲己", "

橘右京", "

阿軻", "

王昭君", "

馬化騰"] #

原始列表

#建立乙個新列表hero_name,分別將heroes中的值追加到其中

#hero_name =

for hero in

heroes:

print(hero_name)

2、使用列表推導來將資料新增到乙個新列表中

#

2、使用列表推導,將heroes中的資料取出來放到乙個新列表中

hero_name = [hero for hero in

heroes]

print(hero_name)

列印結果如下

3、在列表推導式中加上if語句

#

結合if語句,例如取出來名稱長度大於2的值

hero_name = [hero for hero in heroes if len(hero) > 2]

print(hero_name)

列印結果如下

4、看乙個複雜的例子,2個for迴圈如何轉換成列表推導式

nums = [[1, 3, 5, 7], [2, 4, 6, 8]]

#使上述nums中的每個數字都取出來,放到乙個新列表中,用到2個for迴圈

new_nums =

for nums_a in

nums:

#print(nums_a)

for i in

nums_a:

print("

new_nums的值為:{}

".format(new_nums))

#列表推導式

new_num = [i for nums_a in nums for i in

nums_a]

#從左至右,分別是外層迴圈到內層迴圈;先把裡面的2個小列表遍歷一遍,然後再遍歷每個小列表的數字;

#最後的表示結果的變數,寫在最左側

print("

new_num的值為:{}

".format(new_num))

#加乙個判斷條件,如果大於6,就取出來

new_num_1 = [i for nums_a in nums for i in nums_a if i > 6]

print("

new_num_1的值為:{}

".format(new_num_1))

#定義乙個函式,求平方

defsquare(x):

return x *x

new_num_2 = [square(i) for nums_a in nums for i in nums_a] #

把結果傳到乙個函式中

print("

new_num_2的值為:{}

".format(new_num_2))

列印結果如下

原書中的小tips

Python基礎 列表推導式

1.列表推導式書寫形式 表示式 for 變數 in 列表 或者 表示式 for 變數 in 列表 if 條件 2.舉例說明 usr bin python coding utf 8 li 1,2,3,4,5,6,7,8,9 print x 2 for x in li print x 2 for x i...

python 理解列表推導式以及列表推導式巢狀

所謂列表推導式,就是將乙個可迭代的列表遍歷,將每次遍歷的元素拿出來進行一些操作,並用乙個 括起來,組成乙個新的列表 expression for i in item if condition expression 就是對每乙個元素的具體操作表示式 item是某個可迭代物件的元素,如列表,元組或字串等...

python列表推導式

a 1,2,3,4,5,6,7 將每個元素求平方 加入到b列表中 1.列表解析 b x 2 for x in a print b 2.用map實現 c map lambda x x 2,a print list c 3.用迴圈實現 d for x in a print d 將a中的偶數求立方加入到新...