FunTester python 使用 filter 方法递归筛选法求 N 以内的质数 (素数)

FunTester · 2020年04月05日 · 981 次阅读

本人在学习使用 Python 的 lambda 语法的过程中,用之前求解质数的思路重写了一遍,思路如下:就是新建一个长数组,然后从前往后递归相除去过滤后面的元素。中间对于 Python 语法的有了一点新的认识:看自己的代码很陌生,大概是因为写得少的原因。

下面是代码:


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

点击查看所有文章

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册