我正在上课学习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循环以将列表作为结果列表包含在内时需要去哪里。
你能解释我在做什么吗?
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]]
答案 0 :(得分:1)
我看到它更加复杂,因为他们希望您在输出中包含列表列表。您添加到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的每种组合制作一个元素列表(每个值旁边的方括号都显示了这一点)。