运营商// =和::做什么?

时间:2017-06-17 23:59:36

标签: python python-3.x operators

我正在研究Euler problems,并在网上找到了第三个问题的代码。

我使用Python 3来解决第三和第四个问题。

def lpf(c):  # largest_prime_factor
    i = 2
    while i * i <= c:
        if c % i:
            i += 1
        else:
            c //= i            # c // i returns the integer quotient of c/i 
    return c

我知道//会返回一个除法的整数商,但是当一个等号放在它之后会发生什么?

c //= i - &gt; c/i的整数商是否受变量c影响?

,我正在处理问题4的回文,我找到了这个算子::

例如,以下是使用它的代码:

> s = str(12321)

> print(s == s[::-1])

Output : True  

(如果数字是回文数,则输出为True,否则输出为False。)

运算符::是否正在读取字符串并使用选项进行更改?如果是这样,你如何使用它?

1 个答案:

答案 0 :(得分:4)

如果您通过??=特殊运营商阅读??等运营商,通常(并非总是),可以替换为:

c ??= e

成:

c = c ?? e

因此操作已完成 inplace 。所以你在这里写道:

c = c // i    # equivalent to c //= i

请注意,有时就地操作与非现场操作不同。例如列表 la += lb is not equal to la = la + lb。由于数值值是不可变的,因此我们可以在这里进行优化,因此对于数字,上面的(可能)总是保持不变。