【发布时间】:2021-10-23 06:43:56
【问题描述】:
好的,首先,我将放一个与我想要的无关的代码,但它基本上接近我想要的。
def perfect(n):
return n == sum(i for i in range(1, n) if not n % i)
这个函数基本上是完全数,但在一行中。
我有一个问题要列出一个数字的所有公地(如果数字是 8,那么 list = [1, 2, 4, 8]。 我想尝试这样的事情,在一两行中,但我无法真正做到......我知道如何用几行来解决它,但我想尝试在编码方面做得更好,更有效率.
我试过了:
def common_number(number):
empty_list = []
return empty_list.append() = (common for common in range(1, number + 1)) if number % common == 0
有没有什么方法可以让代码像完美数字一样高效,但在一般情况下,它会起作用吗?很高兴知道是否有办法。 你可以给我一个小费(它是可取的,而不是答案)。 感谢您的问候。
编辑: 我知道如何解决代码,这是一个简单的问题:
def common_number(number):
empty_list = []
for common in range(1, number + 1):
if number % common == 0:
empty_list.append(common)
return empty_list
x = common_number(8)
print(x)
但如前所述,我希望像上面那样高效(有人这样帮助我)
【问题讨论】:
-
return [common for common in range(1,number+1) if number % common==0],如果我没听错? -
欢迎来到 Stack Overflow。请尝试将
python list comprehension放入搜索引擎,看看是否可以解决。除了一些基本语法之外,您确实已经知道您需要什么,而 Stack Overflow 不是学习这些的地方;您应该按照教程学习语言基础知识。官方 python.org 网站提供了一个。 -
欢迎来到 Stack Overflow!请使用tour 并阅读How to Ask。效率意味着您的代码如何执行,但这段代码根本不执行 - 它在语法上是无效的。如果我是你,我会把问题改成“我怎样才能在一行中建立一个列表?”其次,当您说“普通”时,您的意思是“因素”,对吗?您可能对“共同因素”一词感到困惑。
-
已编辑。我很惊讶你还没有金色 [python] 徽章。
标签: python