Şimdi bunu birkaç şekilde kısaltmak mümkün. Birincisi satır sayısı bakımından. İkincisi performans açısından.

Öncelikle kodun kısaltılmış ilk hali:


from __future__ import print_function
import math
n1, n2 = int(input('First number: ')), int(input('Second number: '))
asal = lambda x: print(x) if all(x % s != 0 for s in range(2, int(math.sqrt(x)+1))) == True else False
asallar = map(asal, range(n1, n2))


Lambda fonksiyonları kullanarak kodu 6 satıra indirdik. Şimdi biraz daha kısaltalım :


from __future__ import print_function
import math
n1, n2 = int(input('First number: ')), int(input('Second number: '))
asallar = map(lambda x: print(x) if all(x % s != 0 for s in range(2, int(math.sqrt(x)+1))) == True else False, range(n1, n2))


asal lambda fonksiyonunu map in içine alarak kodu 4 satıra indirdik. Ayrıca sen asal kontorlü yaparken sayının kendisine kadar böldürtmüşsün. Bu çok uzun maliyetli bir yöntem. Bir sayı karekökünden daha yüksek bir sayıya zaten bölünemez. O yüzden sayının kareköküne kadar kontrol etmek yeterli.. Bu da performans açısından kıslatma...