gpt4 book ai didi

python - 如何编写更多 Pythonic 代码

转载 作者:太空宇宙 更新时间:2023-11-04 07:23:17 25 4
gpt4 key购买 nike

我今天是从官网的教程开始学习python的。

当阅读有关filter(function, sequence) 的内容时,我想制作一个函数,如果数字是质数则返回,以便与过滤器一起使用。

notDividedBy = [2,3,4,5,6,7,8,9]

def prime(num):
"""True if num is prime, false otherwise"""
copy = notDividedBy[:]
check = True
if num in copy:
copy.remove(num)
for x in copy:
if num % x == 0:
check = False
break
return check

以上代码在 shell 中有效。

我的问题是:因为我觉得虽然是一个解决方案,但它不是最优雅的,任何人都可以将这段代码转换成更像 python 的东西吗?(更好的结构?更少的行?)

我相信它会帮助我更好地理解这门语言的基础知识。

问题是,不要使用任何进口或任何东西,只使用简单的员工。

最佳答案

创建许多列表的副本并不是一种特别有效的做事方式。而是使用 xrange() (Python 2.x) 或 range() (Python 3) 迭代器。这是您可以实现素性测试的一种(天真)方法:

from math import sqrt

def isPrime(n):
if n < 2: return False
if n == 2: return True
if not n % 2: return False #test if n is even

#we've already remove all the even numbers, no need to test for 2
#we only need to test up to sqrt(n), because any composite numbers can be
# factored into 2 values, at least one of which is < sqrt(n)
for i in xrange(3, int(sqrt(n)) + 1, 2):
if not n % i:
return False
return True

关于python - 如何编写更多 Pythonic 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11479955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com