我正在尝试将列表理解转换为for循环。
lst = [ x**2 for x in [x**2 for x in range(11)] ]
我试过下面的代码
lst = []
for x in range(1):
for x in range(11):
lst.append(x**4)
print lst
但这与x**2
和x**2
不匹配。在我的代码中,没有x**2
两次
lst = []
for x in range(1):
for x in range(11):
lst.append(x**4)
print lst
有人能帮助处理x**2
出现两次的for循环吗?你知道吗
我会尽力解释出什么地方出了问题
为了在不使用列表理解的情况下获得相同的结果,您可以将列表分成两个部分。嵌套列表和输出列表。你知道吗
注意在列表理解中,内部列表是如何在外部列表之前先迭代的。同样的逻辑也适用于这个“拆分”版本。你知道吗
这样做的原因是:错了
是因为当你做以下事情时
实际上,您正在应用
**2
列表的长度。因此输出例如[0,1]到[0,1,0,1],而不是列表中的元素。你知道吗我想从这个意义上说,列表理解是明智的。你知道吗
在列表理解中,内部理解的
x
与外部作用域中同名的变量不同。展开时,变量在同一范围内,因此不能使用相同的名称。你知道吗但当然,您不需要两个循环—在静态列表上使用单个元素的循环是完全没有意义的。你知道吗
如果你坚持要有
x**2
两次,当然也可以这样做:但在我看来,展开理解和分解都是不必要的改变。这很简单,任何有能力的程序员都应该能理解;如果有什么特别不明显的地方,可以添加注释。你知道吗
顺便说一下,如果您只是在学习基础知识,那么您可能应该忽略python2,而将时间花在当前推荐和支持的语言版本上,即python3。你知道吗
相关问题 更多 >
编程相关推荐