基本运算符#
运算符是Python中的符号,用于进行特定的计算或操作。运算符所操作的值或条件被称为运算数。运算数可以是一个变量,如 jan_precip_in,其中有一些值(比如0.70) 或数据结构,如一个包含月份的列表。操作数也可以是一个条件表达式或语句。
例如,你可以检查列表中的月份是否包含一月的值。如果列表中包含January,检查的结果是True(January确实存在于月份列表中)。如果不包含January,则返回False(January不存在于月份列表中)。Python中有许多不同类型的运算符,包括:Arithmetic、Assignment、Comparison or Relational、Identity、Membership和Logical
1. Python中的算术运算符#
在Python中,可以完成许多算术运算,包括以下运算符:
addition (
+)subtraction (
-)multiplication (
*)division (
/)exponents (
**)
尝试一下吧:
#Add two values
a = 2
b = 3
a + b
5
#Exponents
a ** b
8
2. Python中的赋值运算符#
如果想为计算结果分配一个新值,可以使用一个赋值运算符,它将算术运算符(例如*)与赋值=相结合来设置一个新值。例如,我们可以组合 * 和 = 乘以一个值,并将结果设置为等于它本身加上新值。
jan_precip = 0.70
inches_to_mm = 25.4
jan_precip *= inches_to_mm
jan_precip
17.779999999999998
回想上一课中,还使用了赋值运算符将项目附加到列表的末尾。当列表包含字符串时,此方法有效。这是加法赋值运算符的一种特殊情况,+=因为它实际上并没有完成对列表的数学运算。它只是将值作为新项目附加到列表的末尾。
months = ["January", "February"]
months += ["March", "April"]
months
['January', 'February', 'March', 'April']
但是,并非所有赋值运算符都可以用于所有对象类型。例如,以下代码将导致错误,因为Python不知道如何处理重新分配列表中的每个值。
boulder_precip_in = [0.70, 0.75, 1.85]
boulder_precip_in *= 25.4
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[5], line 2
1 boulder_precip_in = [0.70, 0.75, 1.85]
----> 2 boulder_precip_in *= 25.4
TypeError: can't multiply sequence by non-int of type 'float'
注算术赋值运算符的输出不会自动打印。如只调用变量名(例如a, jan_precip, b),只会看到最后一个变量的值。
a
jan_precip
b
3
这时使用 print() 语句会很有帮助,这样可以打印多个值
print(a)
print(jan_precip)
print(b)
2
17.779999999999998
3
3. Python 中的关系运算符#
在Python中,我们经常需要将两个值相互比较。要做到这一点,可以检查一个语句,如3 < 4,并从Python中得到两个值中的一个返回True 或 False。这些被称为布尔值,在脚本工作流程中可是非常强大的。布尔值是一个要么是1(真),要么是0(假)的值。像字符串或整数一样,布尔值是它们自己的数据类型。
在Python中,有许多可以使用的关系操作,包括以下的运算符:
equal (
==)not equal (
!=)greater than (
>)greater than or equal (
>=)less than (
<)less than or equal (
<=)
关系运算返回一个布尔值:
#Is the value 3 less then 4?
3 < 4
True
#Does 3 equal 3?
3 == 3
True
is_greater = (3 > 2)
is_greater
True
4. Python中的成员运算符#
成员运算符,例如in,将检查一个项目是否包含另一个项目。这对于字符串、列表或后面的课程中学习的其他数据存储对象(例如数据框)很有用。
precip = "Precipitation"
#Are the characters `Precip` in the object called precip?
"Precip" in precip
True
temp_1 = [70, 68, 74]
68 in temp_1
True
5. 逻辑运算符#
逻辑运算符可用于检查布尔值的组合。最常见的逻辑运算符是andandor。and将检查被检查的两个语句是否为真。True and True会回来True,但True and False会回来False。or将检查被检查的语句之一是否为真,True or True会返回True,True or False也会返回True,False and False和False or False返回False。
#True and True
68 in temp_1 and 70 in temp_1
True
#True and False
68 in temp_1 and 69 in temp_1
False
6. 身份运算符#
一个身份运算符,例如is,将检查两个变量是否指代同一个对象。它与 == 操作符相似,只是它不仅会检查两个变量的值是否相同,而且会检查它们在 Python 中是否指代完全相同的东西。这是一个微妙的区别,但可以非常有用。
#Create variables to compare
temp_1 = [70, 68, 74]
temp_2 = [70, 68, 74]
#reate a new variable called temp_3 from temp_1
temp_3 = temp_1
#Test that temp_3 the same as temp_1
temp_1 is temp_3
True
#While temp_1 and temp_2 contain the same values...
temp_1 == temp_2
True
#They have been created independently
temp_1 is temp_2
False
通过这个例子,可以很容易地看到 == 和 is 之间的区别。尽管temp_1和temp_2包含相同的值,但它们在技术上不是同一个列表。也就是说,它们不是存储在计算机上的同一个内存位置。然而,由于temp_3被设置为等于temp_1,它们是完全相同的。
也可以把 “是 “和 “不是 “结合起来,检查两个变量是否相同。
temp_1 is not temp_2
True
is_the_same = (temp_1 is temp_2)
is_the_same
False
7. 运算符优先级#
和一般数学运算一样,Python所有运算符都是有优先级的,因此在实际使用的时候要注意,例如上面的例子中,我们不需要括号也能得到一样的结果:
is_the_same = temp_1 is temp_2
is_the_same
False
说明is的优先级是高于=赋值符号的,具体的优先级顺序可以参考Python官方文档:https://docs.python.org/3/reference/expressions.html#operator-precedence
如果平时使用的时候觉得查询太麻烦,那就用括号好了。