将列表理解中的嵌套列表用于for循环



我正在上课学习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 list中得到一个列表。

你能解释一下我做错了什么吗?

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,80120],[80,160240],[120,240360]]

我的列表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的每个组合制作一个单元素列表(每个单独值周围的方括号显示了这一点(。

最新更新