Python中‘**+’运算符的行为是什么?新手疑惑列表推导式输出
理解Python列表推导式中的
i**+1 嘿,作为Python新手碰到这种看起来像“新运算符”的写法确实容易懵——其实这里根本没有**+这个组合运算符哦!咱们拆开来解释就清楚了:
- 首先,
**是Python里的幂运算符,比如2**3就是计算2的3次方,结果是8,这个你已经知道啦。 - 这里的
+1并不是和**绑定的,它就是单独的正整数1(+是正号,用来明确表示这是正数,和直接写1的效果完全一样)。所以i**+1完全等价于i**1,也就是求i的1次方,结果就是i本身。
那你写的列表推导式[i**+1 for i in range(3)],其实就等于[i**1 for i in range(3)],而range(3)会生成0、1、2三个数,每个数的1次方还是它自己,所以最终输出就是[0, 1, 2]。
顺便给你拓展下类似的写法,帮你加深理解:
- 如果是
i**-1,这里的-是负号,意思就是求i的-1次方,也就是1/i(注意0的话会触发除以零的错误哦)。 - 你提到的
i += 1是赋值运算符,和这个表达式里的运算完全不是一回事——i +=1是把i的值加1后再赋值给i,会改变i本身;而i**+1只是一个计算表达式,不会修改i的原始值。
你可以直接跑这段代码验证结果:
result = [i**+1 for i in range(3)] print(result) # 输出: [0, 1, 2]
这样是不是就完全清楚啦?
内容的提问来源于stack exchange,提问作者Mahesh
相关产品推荐
相关产品推荐

