将嵌套的Python循环转换为列表推导

Luc*_*nes 3 python list-comprehension

我已经开始研究一些Project Euler问题了,并用一个简单的蛮力解决方案解决了4号问题:

def mprods(a,b):
 c = range(a,b)
 f = []
 for d in c:
  for e in c:
   f.append(d*e)
 return f

max([z for z in mprods(100,1000) if str(z)==(''.join([str(z)[-i] for i in range(1,len(str(z))+1)]))])
Run Code Online (Sandbox Code Playgroud)

解决之后,我试图让它尽可能紧凑,并想出了可怕的底线!

不要留下半成品,我试图将mprods函数压缩成列表理解.到目前为止,我已经想出了这些尝试:

  • [d*e for d,e in (range(a,b), range(a,b))]
    显然完全走错了轨道.:-)
  • [d*e for x in [e for e in range(1,5)] for d in range(1,5)]
    这给了我[4, 8, 12, 16, 4, 8, 12, 16, 4, 8, 12, 16, 4, 8, 12, 16],我期望 [1, 2, 3, 4, 2, 4, 6, 8, 3, 6, 9, 12, 4, 8, 12, 16]或类似的地方.

那里的任何Pythonist都可以提供帮助吗?:)

Ign*_*ams 7

c = range(a, b)
print [d * e for d in c for e in c]
Run Code Online (Sandbox Code Playgroud)