首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python代码解释reqd

问python代码解释reqd
EN

Stack Overflow用户
提问于 2012-02-12 19:22:05
回答 2查看 216关注 0票数 0

我对python很陌生,为了更好地掌握它,我正在经历一些预先编写的代码。当一个数字在分母为1时,这段代码试图得到每个非终止周期的数字数。1/3 = 0.(3)它的循环为1.相似的7有一个6的循环,1/7 = 0.(142856)

代码语言:javascript
复制
def get_decimals(num, div, current=([], [])):
    """Return a tuple (integer_part, decimal_part, cycle_length) for num/div"""
    headtail = lambda lst: (lst[0], lst[1:])
    memory, values = current
    if values and num == 0:
        integer, decimals = headtail(values)
        return integer, decimals, 0
    elif num in memory:
        integer, decimals = headtail(values)
        print integer, decimals
        lencycle = len(memory) - memory.index(num)
        return integer, decimals, lencycle
    a, b = divmod(num, div)
    return get_decimals(10*b, div, (memory+[num], values+[a]))

print max((get_decimals(1, num)[2], num) for num in xrange(2, 10))[1]

有人能解释一下上面贴的代码吗?我不明白以下几点:

  1. 上一次打印语句中的下标2和1。
  2. memory.index(num)这个在第4行到最后一行的get_decimals函数中。
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-12 19:50:58

除非你是新来的,否则以上的解释是有道理的。如果没有,我试着用一种简单的方式解释:

对于列表a = [1, 2, 3],您将访问第一个元素为:a[0],类似地,在get_decimals(1, num)[2]之后的下标意味着如果函数返回一个元组/字典访问第三个元素,在您的例子中是不终止序列的周期长度。对于输入号7,输出将是6,因为它具有142856的非终止周期。

对于行:max((get_decimals(1, num)[2], num) for num in xrange(2, 10))[1],如果没有下标1,您将看到两个值打印,但是编码器只关心返回的第二个值。很明显,守则上说:

为值2至10调用函数get_decimals。

查找返回的元组的最大值,并打印已筛选为最大值的元组的第二项。

索引解释得很清楚,不需要进一步解释。只是另一个简化: 1,2,3列表中2的索引是1,这将澄清内容。

在阅读代码之前,请参阅正式的python文档。国际水文学组织。

票数 0
EN

Stack Overflow用户

发布于 2012-02-12 19:28:53

代码语言:javascript
复制
get_decimals(1, num)[2]

get_decimals返回一个包含3个项的元组,名为integer、decimals和lencycle。因此,下标[2]选择了lencycle。

代码语言:javascript
复制
max((get_decimals(1, num)[2], num) for num in xrange(2, 10))[1]

下标[1]从表单(get_decimals(1, num)[2], num)的元组中提取num。注意,max函数是在[1]下标之前应用的。在这种情况下,max是在可迭代的元组对上操作,并使用字典排序来比较项。

memory.index(num)调用对象memory上的方法index,将num作为参数传递。因为memory是一个列表,所以这只是查找该列表中num值第一次出现的索引。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9251874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档