基本运算符#
运算符是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. 逻辑运算符#
逻辑运算符可用于检查布尔值的组合。最常见的逻辑运算符是and
andor
。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
如果平时使用的时候觉得查询太麻烦,那就用括号好了。