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

如何解决列表理解中的嵌套列表为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,60]:
    for y in [2,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,60]] for y in [2,6]]
print('My list 3',my_list3)

my_list4 = []

for x in [20,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,60]:
  my_list4.append([])  # append the empty sublist to the parent list
  for y in [2,6]:
    my_list4[-1].append(x*y)  # use [-1] to reference the last item
                              # in my_list4,which is the current sublist.

您的尝试是针对x和y的每种组合制作一个元素列表(每个值旁边的方括号都显示了这一点)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?