[英]Nested list in list comprehension to for loop
我正在上課學習python。 我們在涵蓋列表理解的部分中,我很難理解其中一個示例中發生的情況。 我正在嘗試將其轉換回 for 循環以了解正在發生的事情,但是我遇到了一個問題。
示例: 1 這我可以很好地轉換為 FOR 循環。 輸出是一樣的
my_list1 = [ x * y for x in [20, 40, 60] for y in [2, 4, 6]]
print('My list 1', my_list1)
my_list2 = []
for x in [20, 40, 60]:
for y in [2, 4, 6]:
my_list2.append(x*y)
print(my_list2)
輸出
我的清單 1 [40, 80, 120, 80, 160, 240, 120, 240, 360]
我的清單 2 [40, 80, 120, 80, 160, 240, 120, 240, 360]
示例 2:我在轉換為 FOR 循環時遇到問題。 我的輸出是不同的。 我不知道如何獲取要在列表中輸出的列表。 第二組 [] 是什么讓我失望。 我不知道在轉換為 FOR 循環以獲取 as 列表中的列表時他們需要去哪里。
你能解釋一下我做錯了什么嗎?
my_list3 = [[x * y for x in [20, 40, 60]] for y in [2, 4, 6]]
print('My list 3', my_list3)
my_list4 = []
for x in [20, 40, 60]:
for y in [2, 4, 6]:
my_list4.append([x*y])
print('My list4', my_list4)
輸出
我的清單 3 [[40, 80, 120], [80, 160, 240], [120, 240, 360]]
我的清單4 [[40], [80], [120], [80], [160], [240], [120], [240], [360]]
我看到它更復雜,因為他們希望您在輸出中有一個列表列表。 添加到 my_list4 的每個元素都必須是一個列表本身。
如果作業是刪除所有列表推導式,則必須一次構建一個子列表,然后將子列表添加到父列表中。 像這樣:
for x in [20, 40, 60]:
sublist = [] # make an empty sublist
for y in [2, 4, 6]:
sublist.append(x*y) # put a single value into the sublist
my_list4.append(sublist) # add the completed sublist onto the parent list
雖然為了清楚起見,我更喜歡上述方法,但您也可以通過預先將空子列表添加到父列表中來避免創建臨時列表,並在添加值時不斷引用它:
for x in [20, 40, 60]:
my_list4.append([]) # append the empty sublist to the parent list
for y in [2, 4, 6]:
my_list4[-1].append(x*y) # use [-1] to reference the last item
# in my_list4, which is the current sublist.
您的嘗試是為 x 和 y 的每個組合制作一個單元素列表(每個單獨值周圍的方括號向您展示了這一點)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.