精华内容
下载资源
问答
  • 2021-02-02 11:11:20

    运算符是构成python表达式的基础,了解python有哪些运算符及运算符之间的优先级,对于构建合适的python表达式很有帮助,本文主要记录python运算符及优先级关系。
     

    运算符的优先级

    如下表所示,优先级按照从低到高排序,“lambda”优先级最低,“括号、列表推导、元组推导、字典推导、集合推导”优先级最高,位于同一方框中的运算符具有相同的优先级下表中运算符中带“x”的表示一元运算符

    运算符描述
    lambdalambda表达式
    if-else条件表达式
    or布尔运算或
    and布尔运算与
    not x布尔运算取反
    in, not in, is, is not, <, <=, >, >=, !=, ==成员检查、实体检查、比较运算
    |位运算或
    ^位运算异或
    &位运算与
    <<, >>位运算移动
    +, -加法, 减法
    *, @, /, //, %乘法、矩阵乘法、除法、整除、取余
    +x, -x, ~x取正、取反、按位取反
    **幂运算
    await xawait 表达式
    x[index], x[index:index], x(arguments…), x.attribute索引、切片、调用、属性引用
    (expressions…), [expressions…], {key: value…}, {expressions…}括号, 列表、元组、字典、集合推导式

     

    补充材料

    在这里插入图片描述
     

    SimHash

    SimHash在计算文档hashcode值、及计算两个hashcode之间的“海明距离”时,需要使用到“位运算符”。关于SimHash的原理及实现可以阅读参考资料3。
     

    参考资料

    1. 官网-python运算符
    2. python运算符
    3. 使用SimHash进行海量文本去重
    更多相关内容
  • Python运算符优先级

    2022-06-11 16:46:23
    Python运算符优先级

    虽然本文讲的是Python,但其实它也适用于所有的编程语言。因为这里面蕴含着编程之魂。所以本文标题没有显著的使用Python关键词。当然以前的文章用了Python关键词是因为当时我并没有想到这一点,很多内容也适用所有编程语言。

    本文是运算符相关教程的最后一篇,将介绍运算符的最后一个汇总性的概念——运算符的优先级。

    优先级概述

    所谓优先级,是指优先计算的顺序。比如小学中我们学过的加减乘除基本四则运算,乘除要先于加减计算,因为乘除的优先级比加减要高。小括号拥有最高优先级,如果想先计算加减,可用小括号将其包围起来,在Python中也是如此,很显然,计算顺序不同,其结果也是不同的:

    相同优先级

    有些运算是互逆的,交换它们的位置不影响运算结果,所以区分它们的优先级是没有必要的,比如加和减(包括正号和负号)、乘和除、左移和右移、is与is not、in与not in。这些运算符都具有相同的优先级。

    当然,有些运算符交换位置会影响结果,但它们本身只是表示同一种算法的不同结果,难以区分不同的优先级。比如比较运算符中的等于、大于、小于、不等于、大于等于、小于等于都具有相同的优先级。

    需要特别注意的是,虽然Python支持诸如下例所示的连续的比较运算符:

    a > b == c

    但它其实是 a > b and b == c 的简略写法,而不是表示先进行计算 a > b ,然后用结果判断是否等于c,也不是判断a是否大于 b == c 的结果,下面的示例可以证明这点,无论哪个运算符先计算,其结果都与原始表达式结果不同,只有转换成两个表达式才一样(注:False等价于0,True等价于1):

    这一点,对于<等其他比较运算符,规则也是如此。

    当然,大多数运算符的优先级是不同的。

    结合性

    与运算符优先级相关的另一个重要概念是结合性,它决定了同一种运算符是从左往右计算,还是从右往左。下面是一个优秀的著名例子:

     它证明乘方运算的结合性是从右往左。

    大多数运算符都是从左往右开始计算的,简称左结合性。只有少部分运算符具有右结合性。下面是右结合性运算符列表:

    按位取反(位非)、正负号、位与、逻辑非、赋值系列运算符

    运算符优先级一览表

    其中上一行比下一行的优先级高,同一行表示优先级相同。在同一个表达式中,按照优先级从高到低依次计算,优先级相同则按照从左到右的顺序计算。同一类型的运算符则按结合性计算。

    注:其中@为矩阵乘法运算符,大多数资料中都没有记录此运算符。官方文档记录:“The @ (at) operator is intended to be used for matrix multiplication. No builtin Python types implement this operator.”(@(at)运算符打算用于矩阵乘法。没有任何内置的Python类型可以实现此操作符。)

    赋值系列运算符的优先级最低,比or还要低:

    另外赋值运算符支持连续的赋值,这和比较运算符类似,但其实也是相当于两个分开的赋值,与优先级无关:

    本表参考于Python3.7.3官方文档:

    Python3.10.4官方文档也一样,但是没有前者友好,顺序是相反的:

     运算符优先级重点说明

    运算符优先级的概念并不需要去刻意地记忆,如果对某个运算符的优先级不太确定,可以使用小括号将其包围起来。

    当然,记住一些重要的优先级概念,有助于对程序的阅读理解与编写维护。下面是一些重要的优先级:

    1. 小括号具有最高优先级。

    2. 运算符优先级按类别排序:算术 > 位 > 身份 >成员 > 比较 > 逻辑 > 赋值。 算术最高,赋值被低。位非运算符是个另外,它高于乘除。

    3. 身份、成员、比较、赋值运算符,同类中优先级相同。

    4. 算术运算符中:乘方最高,乘除整除取余次之,加减最低。

    5. 位运算符中:位非 > 左右移 > 位与 > 位异或 > 位或

    6. 逻辑运算符中:非最高,与次之,或最低。

    另外,我没有听说过任何编程语言有降低运算优先级——与小括号功能正好相反的运算符。这应该是没有必要的,因为根据相对性原理,给一个运算符最高优先级,就相当于给其他运算符最低优先级了,所以,如果想给一个运算符最低的优先级,可以将其余的运算符全部用小括号包围起来。

    最后,除了可以用于提高运算符的优先级之外,在Python中,小括号还有另外一个重要的功能——做为元组的定界符。

    身为Python特有的四大基本数据类型之一,元组(tuple)已经在本教程中出现过很多次了,在以后还会出现更多次,所以,下一篇将正式介绍元组。敬请关注。

    结语

    通过本文的编写,我意识到自己对Python的认知还有很大的局限——我刚刚才得知Python中有@矩阵乘法运算符!

    虽然我接触编程已有14年了,初识Python也有五六年了,使用Python编写的大大小小的程序工程也有近百个,但是如果不是今天对网上运算符优先级资料正确性的质疑,没有查看官方文档的话,不知道还要多少年之后才会得知这一点。

    我以前无论找到的与运算符相关还是运算符优先级相关的Python资料都没有提到@,这也说明网上绝大部分的资料的正确性也需要证明。比如关于乘方运算符的右结合性,网络上大多资料都错误的记录为左结合性。

    我写作这样的文章也很困难,因为我吹毛求疵的性格要求我必须写出全网独一无二的最优秀的精品内容,独一无二是很容易的,我的任何一篇文章都有自己独特的理解,并不是简单的对其他地方资料的搬运整合,最优秀就非常困难了,这不仅需要无私的分享精神,更需要卓越的洞察与理解能力,我正在朝这个方向努力。

    如果不能做到这一点,我觉得就没有写出来的必要,虽然我的文章点击率很低,但最近的文章都有近十分之一的阅读收藏率证明了读者对它的认可,这也是头条给予1万推荐的原因所在,否则至多100个推荐就到头了。

    另注:本教程首发于头条,百家号当时唯一一篇没有同步的,新形式教程的诞生还有一段时间,所以增补一下空档期。

    展开全文
  • Python运算符优先级教程我们知道,在数学运算中,有 “先乘除后加减” 的运算规则,在我们程序语言中一样有运算符的优先级问题,来决定我们运算的顺序问题,这就是运算符的优先级。即所谓运算符的优先级,指的是在...

    Python运算符优先级教程

    我们知道,在数学运算中,有 “先乘除后加减” 的运算规则,在我们程序语言中一样有运算符的优先级问题,来决定我们运算的顺序问题,这就是运算符的优先级。

    即所谓运算符的优先级,指的是在含有多个运算符的式子中,到底应该先计算哪一个,后计算哪一个。

    Python运算符运算规则

    需要注意的是,Python 语言中大部分运算符都是从左向右执行的,只有单目运算符、赋值运算符和三目运算符例外,它们是从右向左执行的。

    Python运算符中,如果有小括号,即 (),则小括号的优先级最高。

    Python运算符优先级表

    运算符说明

    Python运算符

    优先级

    小括号

    ()

    20

    索引运算符

    x[index] 或 x[index:index2[:index3]]

    18、19

    属性访问

    x.attrbute

    17

    乘方

    **

    16

    按位取反

    ~

    15

    符号运算符

    +(正号)或 -(负号)

    14

    乘、除

    *、/、//、%

    13

    加、减

    +、-

    12

    位移

    >>、<<

    11

    按位与

    &

    10

    按位异或

    ^

    9

    按位或

    |

    8

    比较运算符

    ==、!=、>、>=、<、<=

    7

    is 运算符

    is、is not

    6

    in 运算符

    in、not in

    5

    逻辑非

    not

    4

    逻辑与

    and

    3

    逻辑或

    or

    2

    案例

    运算符优先级

    乘除优先级比加减高

    print("嗨客网(www.haicoder.net)")

    # 乘除优先级比加减高

    a = 1 + 2 * 3

    b = 10 - 10 / 5

    print('a =', a, 'b =', b)

    程序运行后,控制台输出如下:

    24_python运算符优先级.png

    我们首先定义了 1+2*3 的结果,因为乘法的优先级高于加法,因此这里我们先计算乘法,再计算加法,所以最终结果为 1+6=7。

    接着我们定义变量 b,其值为表达式 10 - 10 / 5 的结果,因为除法的优先级高于减法,因此这里我们先计算除法,再计算减法,所以最终结果为 10-2=8。

    小括号改变运算符优先级

    小括号的运算符优先级最高

    print("嗨客网(www.haicoder.net)")

    # 小括号的运算符优先级最高

    a = (1 + 2) * 3

    b = (10 - 2) / 4

    print('a =', a, 'b =', b)

    程序运行后,控制台输出如下:

    25_python运算符优先级.png

    我们首先定义了变量 a,其值为表达式 (1 + 2) * 3 的结果,因为小括号的运算符优先级最高,因此这里我们先计算小括号里面的加法,再计算乘法,所以最终结果为 3*3=9。

    接着我们定义变量 b,其值为表达式 (10 - 2) / 4 的结果,因为小括号的运算符优先级最高,因此这里我们先计算减法,再计算除法,所以最终结果为 8 / 4 = 2。

    Python运算符优先级总结

    即所谓运算符的优先级,指的是在含有多个逻辑运算符的式子中,到底应该先计算哪一个,后计算哪一个。

    Python 中运算符的运算规则是,优先级高的运算符先执行,优先级低的运算符后执行,同一优先级的运算符按照从左到右的顺序进行。

    Python运算符中,如果有小括号,即 (),则小括号的优先级最高。

    展开全文
  • Python运算符优先级比较

    请添加图片描述
    系列索引:菜菜的Python学习日记 | Python从入门到入土详解

    Python支持多种运算符,下表大致按照 优先级从高到低 的顺序列出了所有的运算符,运算符的优先级指的是多个运算符同时出现时,先做什么运算然后再做什么运算。除了我们之前已经用过的赋值运算符和算术运算符,我们稍后会陆续讲到其他运算符的使用。

    运算符描述
    [] [:]下标,切片
    **指数
    ~ + -按位取反, 正负号
    * / % //乘,除,模,整除
    + -加,减
    >> <<右移,左移
    &按位与
    ^ \|按位异或,按位或
    <= < > >=小于等于,小于,大于,大于等于
    == !=等于,不等于
    is is not身份运算符
    in not in成员运算符
    not or and逻辑运算符
    = += -= *= /= %= //= **= &= |= ^= >>= <<=(复合)赋值运算符
    说明:在实际开发中,如果搞不清楚运算符的优先级,可以使用括号来确保运算的执行顺序。
    

    Python从入门到入土系列持续更新,欢迎点赞收藏关注

    上一篇:菜菜的Python学习日记 | Python类实验代码分享
    下一篇:菜菜的Python学习日记 | Python中类似C语言 ? : 的三目运算if else的用法

    本人水平有限,文章中不足之处欢迎下方👇评论区批评指正~

    如果感觉对你有帮助,点个赞👍 支持一下吧 ~

    不定期分享 有趣、有料、有营养内容,欢迎 订阅关注 🤝 我的博客 ,期待在这与你相遇 ~

    展开全文
  • Java、C++、C语言、PHP、Python运算符优先级对照表.xls
  • 在之前的知识点中我们已经了解各种类型的Python运算符,正如四则运算有其优先级规则,Python的各类运算符之间也同样有优先级的排序。 以下表格列出了从最高到最低优先级的所有运算符: 运算符 描述 ** 指数 (最高...
  • python 运算符优先级由高到低

    千次阅读 2022-04-08 19:54:24
    Python 中运算符优先级,括号的优先级是最高的,无论任何时候优先计算括号里面的内容,逻辑运算符优先级最低。算术运算符可以分为四种,幂运算最高,其次是正负号,然后是 “* /// %”,最后才是加减 “+ -”。...
  • (例题)下面显示的代码输出是什么? a = 1 b = 2 if a and b in [1, 2]: print('1') if a and b in [1, 3]: print('2') ...in运算符优先级大于逻辑与、逻辑或 所以,a and b in [1, 2] 可以看成a...
  • c语言中的语句之间必须用分号作为分隔符吗?_后端开发c语言中的语句之间... python运算符优先级顺序是什么?顺序是由高到低依次是:算术运算符、移位运算符、位运算符优先级、关系运算符、逻辑运算符、赋值运算符1...
  • Python 运算符优先级 所谓优先级,就是当多个运算符同时出现在一个表达式中时,先执行哪个运算符。 例如对于表达式a + b * c,Python 会先计算乘法再计算加法;b * c的结果为 8,a + 8的结果为 24,所以 d 最终的值...
  • Python 运算符_python 运算符重载_python 逻辑运算符_python 运算符优先级什么是运算符?本章节主要说明Python的运算符。举个简单的例子 4 +5 = 9 。 例子中,4 和 5 被称为操作数,”+” 称为运算符。Python语言...
  • python运算符优先级排序

    千次阅读 2020-10-24 20:22:46
    1、算术运算 先算乘除,后算加减,有幂运算先做幂运算 ** *,/,//,% +,- 2、位运算 先算位移,后算与或 <<,>> & | 3、比较运算 即大小比较 <,>,>=,<......
  • Python运算符优先级一览表

    千次阅读 2019-06-24 12:29:55
    所有的数学运算都是从左向右进行的,Python 语言中的大部分运算符也是从左向右结合的,只有单目运算符、赋值运算符和三目运算符例外,它们是从右向左结合的,也就是说,它们是从右向左运算的。 乘法和加法是两个...
  • python运算符优先级

    千次阅读 2018-03-09 12:00:23
    以下运算符优先级顺序依次递增:Lambda #运算优先级最低 逻辑运算符: or 逻辑运算符: and 逻辑运算符:not 成员测试: in, not in 同一性测试: is, is not 比较: &lt;,&lt;=,&gt;,&gt;=,!=,== 按位或:...
  • 指数最高>按位反转>乘,除取模,取整除。。。。。。 实际使用中,记住简单的规则就可以了,复杂的表达式一定要使用小括号...【操作】使用python’表示数学式子 (5+10x)/5-13(y-1)(a+b)/x+9(5/x+(12+x)/y) ...
  • python运算符运算符优先级

    千次阅读 2021-02-26 15:05:34
    python运算符包括算术运算符、赋值运算符、比较运算符、布尔运算符、位运算符。 算术运算符:+,-,*,/,//(整除),%(取余),**(幂运算)。 # 注意,一正一负时计算结果会不同 print(4%3) # 1,取余 print...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,113
精华内容 10,045
关键字:

python运算符优先级