首页 > 解决方案 > 如何使用 for 循环简化 lst = [ x**2 for x in [x**2 for x in range(11)]] 此代码

问题描述

我是python的新学习者。尝试使用 for 循环编写以下代码

lst = [ x**2 for x in [x**2 for x in range(11)]]

我试过这样

lst = []
for x in lst:
    lst.append(x)
    for x in range(0,11):
        lst.append(x)

但无法识别我的错误。请帮助解决它。

标签: pythonlist-comprehension

解决方案


你的错误是认为这里有嵌套循环。外部推导遍历由内部推导创建的未命名列表。我在这里给它命名_scratch

_scratch = []
lst = []

for x in range(11):
    _scratch.append(x**2)
for x in _scratch:
    lst.append(x**2)

但是我们可以看到这可以简化,去掉第二个循环

lst = []
for x in range(11):
    lst.append((x**2)**2)

并且知道一些算术,它可以进一步简化

lst = []
for x in range(11):
    lst.append(x**4)

推荐阅读