【问题标题】:making a code more efficient ( python ) - beginner [duplicate]使代码更高效(python)-初学者[重复]
【发布时间】: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


【解决方案1】:

你想要一个列表理解

def common_number(number):
    return [c for c in range(1, number+1) if number % c == 0]

【讨论】:

  • 哦刚刚看到这个答案,我以为它已经关闭所以我没有费心去检查。是的,就像你做的代码一样。也谢谢:)
猜你喜欢
  • 1970-01-01
  • 2019-05-30
  • 2014-05-04
  • 2022-11-21
  • 1970-01-01
  • 2016-10-12
  • 1970-01-01
  • 2017-09-08
  • 1970-01-01
相关资源
最近更新 更多