python使用filter方法遞歸篩選法求N之內的質數(素數)--附一行打印心形標記的代碼解析

本人在學習使用Python的lambda語法的過程當中,用以前求解質數的思路重寫了一遍,思路以下:就是新建一個長數組,而後從前日後遞歸相除去過濾後面的元素。中間對於Python語法的有了一點新的認識:看本身的代碼很陌生,大概是由於寫得少的緣由。git

下面是代碼:api

i = 0
a = range(2, 20)

def test(sss):
    global i
    if i >= len(sss): return sss
    re = list(filter(lambda x: True if (a[i] == x) else (x % a[i] != 0), sss))
    i += 1
    return test(re)


c = test(a)
print(c)

下面附上Python一行代碼打印心形的代碼解析,把原來一行代碼分拆,把循環和判斷單獨拿出來,看起來比較清晰了,再次感嘆Python語法的強大。數組

print'\n'.join([''.join( [('Love'[(x - y) % 4] if ((x * 0.05) ** 2 + (y * 0.1) ** 2 - 1) ** 3 - (x * 0.05) ** 2 * (y * 0.1) ** 3 <= 0 else ' ') for x in range(-30, 30)]) for y in range(15, -15, -1)])

    for y in range(15, -15, -1):
        line = []
        for x in range(-30, 30):
            if ((x * 0.05) ** 2 + (y * 0.1) ** 2 - 1) ** 3 - (x * 0.05) ** 2 * (y * 0.1) ** 3 <= 0:
                line.append('Love'[(x - y) % 4])
            else:
                line.append(" ")
        l = "".join(line)
        print l

歡迎有興趣的童鞋一塊兒交流markdown

相關文章
相關標籤/搜索