为了账号安全,请及时绑定邮箱和手机立即绑定

列表理解中的嵌套列表到 for 循环

列表理解中的嵌套列表到 for 循环

翻翻过去那场雪 2023-09-12 19:49:40
我正在上一门学习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]]
查看完整描述

1 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

我发现它更复杂,因为他们希望您在输出中包含一个列表列表。添加到 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 的每个组合创建一个单元素列表(每个单独值周围的方括号向您显示这一点)。


查看完整回答
反对 回复 2023-09-12
  • 1 回答
  • 0 关注
  • 68 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信