先說點廢話:
最開始我是通過一本書來入門python的:《head first python》
記得當時學完for迴圈後,書裡介紹了一種簡化**的方法,它可以通過一行**從乙個列表中取出資料然後追加到另乙個列表中,沒錯,就是列表推導式
不過當時學完後,一直沒想起來用,工作中遇到一些需要遍歷取數的情況,直接用for迴圈了,乙個不夠,就直接上倆~~
最近在寫指令碼的時候,因為又一直在用for迴圈,**看起來有點冗雜,所以突然想起來是不是可以用列表推導來代替
ok,廢話完畢,下面開始進入正題,了解一下列表推導到底是個什麼鬼?
1、建立乙個列表,然後使用for迴圈將該列表中的資料新增到另乙個列表中
heroes = ["2、使用列表推導來將資料新增到乙個新列表中亞瑟", "
妲己", "
橘右京", "
阿軻", "
王昭君", "
馬化騰"] #
原始列表
#建立乙個新列表hero_name,分別將heroes中的值追加到其中
#hero_name =
for hero in
heroes:
print(hero_name)
#列印結果如下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中的偶數求立方加入到新...