我需要將以下代碼轉換爲list-comprehension
(單行)。但是,我無法這樣做。 該代碼計算最高輸入範圍A
的素數。用lambda函數將循環轉換爲double並打破列表理解
def sieve(A):
l = []
f = lambda x : int(x**0.5)
for p in range(2,A+1):
for i in range(2, f(p) + 1):
if p % i == 0:
break
else:
l.append(p)
return l
到目前爲止,我下面哪個不起作用。特別是for-loop
內的break
正在拋棄我。
list(set([val for sublist in [[p for i in range(2, f(p) + 1) if p %i != 0 ] for p in range(2,A) ] for val in sublist]))
編輯
增加對問題的約束。 該代碼只能是一個語句,沒有eval
或exec
。代碼長度不得超過160個字符。
爲什麼?我憐憫那個必須嘗試破譯這個列表理解的人。 –
爲什麼首先你想把它轉換成列表理解? –
我知道,這是一個在線問題的一部分,只接受一個班輪解決方案。除非有其他方式提供一條襯裏。 –