python - 单行嵌套循环

新手上路,请多包涵

python 单行相当于下面的代码是什么?

 l=[]
for i in range(3,5) :
    if i==3:
        for j in range(0,2):
            if i%2:
                l.append(i*j)
            else:
                l.append(i+j)
    else:
        l.append(i)
print(l)

我尝试对嵌套循环使用单行,但只有一个条件是这样的:

 print([i*j if i%2 else i+j for i in range(3,5) for j in range(0,2)])

注意:在这里,我想学习如何在两个循环中使用 if else 条件对嵌套循环使用单行等效项。另外,如果不可能,请说明为什么不!

提前致谢 :)

原文由 Trifrost master 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 664
1 个回答

您可以将内部部分转换为一系列列表:

 [[i * j if i % 2 else i + j for j in range(2)] if i == 3 else [i] for i in range(3,5)]

在一般情况下,展开 2D 可迭代对象很容易:

 [e for row in iterable for e in row]

结合两者:

 [e for row in [[i * j if i % 2 else i + j for j in range(2)] if i == 3 else [i] for i in range(3,5)] for e in row]

您可以使用生成器避免存储中间列表:

 [e for row in ((i * j if i % 2 else i + j for j in range(2)) if i == 3 else [i] for i in range(3,5)) for e in row]

原文由 Mad Physicist 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题