Python 运算符 - 快速概览 & 示例
作者:Ruben Geert van den Berg,归档于 SPSS Python 基础
下表提供了一个 Python 运算符的快速概览。
本概览之后,是一些 Python 特有运算符的基本示例。
运算符(OPERATOR) | 形式(LOOKS LIKE) | 功能(FUNCTION) | 示例(EXAMPLES) |
---|---|---|---|
赋值(Assigns value to object) | = | 将值赋给对象 | myString = 'Ruben' |
等于(Equal to) | == | 比较值是否相等 | if myString == 'Chrissy': |
不等于(Not equal to) | != | 比较值是否不相等 | if myString != 'Ruben': |
小于(Less than) | < | 比较值是否小于 | if myAge < 30: |
小于等于(Less than or equal to) | <= | 比较值是否小于等于 | if myAge <= 30: |
大于(Greater than) | > | 比较值是否大于 | if myAge > 30: |
大于等于(Greater than or equal to) | >= | 比较值是否大于等于 | if myAge >= 30: |
身份等于(Identity equal) | is | 检查对象是否具有相同的ID | if myAge is None: |
身份不等于(Identity not equal) | is not | 检查对象是否具有不同的ID | if myAge is not None: |
包含(In) | in | 检查对象是否包含其他对象 | if 'a' in 'banana': |
与(And) | and | 检查两个条件是否都为True | if 'a' in 'banana' and 'c' in 'cherry': |
或(Or) | or | 检查多个条件中是否至少有一个为True | if 'a' in 'banana' or 'b' in 'cherry': |
非(Not) | not | 检查条件是否为False | if not 'c' in 'banana': |
反斜杠(Backslash) | \ | 转义(特殊或普通)字符 | print('new line starts\nhere') |
井号(Hash) | # | 指示该行剩余部分为注释 | #LOOP OVER VARIABLES STARTS HERE |
方括号(Square brackets) | [] | 提取对象的一部分,例如子字符串;指示 Python 列表对象(Python list object) | myString = 'Ruben'[0] |
圆括号(Parentheses) | () | 组合条件;指示 Python 元组(Python tuple) | if ('a' in 'banana' or 'b' in 'banana') and 'd' in 'cherry': |
花括号(Curly brackets) | {} | Python 文本替换的占位符;指示 Python 字典对象(Python dict object) | 'Just say {}!'.format('hello') |
加号(Plus) | + | 将两个或多个数字相加;将元素添加到对象,例如字符串连接 | fullName = 'Ruben' + ' van den Berg' |
减号(Minus) | - | 数字相减 | 10 - 9 |
星号(Asterisk) | * | 数字相乘 | 10 * 9 |
斜杠(Slash) | / | 数字相除 | 10 / 2 |
双星号(Double asterisk) | ** | 数字的幂运算 | 2 ** 10 |
双斜杠(Double slash) | // | 数字的向下取整除法(Floor division) | 3 // 2 |
百分号(Percent) | % | 数字的模运算(Modulus);字符串中的文本替换 | 3 % 2 |
加等于(Plus-is) | += | 将数字添加到现有数字;将元素添加到对象,例如字符串连接 | cntr += 1 |
Python “小于” 运算符
关于 Python 的 <
、<=
、>
和 >=
运算符的一个小提示是,它们也适用于字符串。在这种情况下,它们_大致_指的是这些字符串的字母顺序。
begin program python3.print('a' < 'b') # True
print('a' > 'b') # False
end program.
更准确地说,上述运算符比较的是字符底层 Unicode 码位的大小。 这就是为什么大写字母总是小于它们的小写字母的原因。
begin program python3.print('a' < 'A') ## False
print('a' > 'A') ## True
end program.
大多数(但不是全部)特殊字符在所有数字之前,数字在所有字母之前。
begin program python3.print('#' < '5') # True
print('5' < 'Z') # True
end program.
Python “is” 运算符
在 Python 中,“is” 评估两个对象是否共享同一个 ID。 当比较 Python 对象时,我们通常比较它们的值是否相等。 然而,一个更严格的比较是它们的 ID 是否也相等。 下面的语法展示了一个快速示例。
***COMPARE STRING OBJECT WITH SAME VALUES, DIFFERENT IDS.
begin program python3.= 'Ruben'
myName = 'Rube'
yourName += 'n'
yourName print(myName,yourName) # Ruben Ruben
print(myName == yourName) # True
print(id(myName),id(yourName)) # 51019032 51016008
print(myName is yourName) # False
end program.
如果两个对象具有相同的 ID,那么它们基本上只是同一个对象的不同名称。 在这种情况下,对其中一个的更改也会应用于另一个。
***CREATE 2 LIST OBJECTS WITH SIMILAR IDS.
begin program python3.= [1,3,5]
myList = myList
yourList print(myList is yourList) # True
7) # Applies to 'both' lists
myList.append(print(myList,yourList) # [1, 3, 5, 7] [1, 3, 5, 7]
end program.
***CREATE 2 LIST OBJECTS WITH DIFFERENT IDS.
begin program python3.= [1,3,5]
myList = myList[:]
yourList print(myList is yourList) # False
7) # Applies only to myList
myList.append(print(myList,yourList) # [1, 3, 5, 7] [1, 3, 5]
end program.
Python “in” 运算符
Python 的 “in” 运算符评估某个对象是否包含另一个对象。 基本示例包括:
- 某个 Python 字符串(Python string) 是否包含某个子字符串?
- 某个 Python 列表(Python list)是否包含某个字符串?
- 某个 Python 元组(Python tuple) 是否包含某个整数?
***CHECK IF STRING CONTAINS SUBTRING.
begin program python3.= 'banana'
myFruit print('an' in myFruit) # True
end program.
***CHECK IF LIST CONTAINS SUBTRING.
begin program python3.= ['apple','banana','cherry']
myFruit print('apple' in myFruit) # True
end program.
请注意,对于 Python 字典(Python dict)对象,“in” 运算符有点棘手:它只检查某个对象是否在字典的 键(keys) 中,而不是它的值。
***"IN" ONLY INSPECTS DICT KEYS, NOT VALUES.
begin program python3.= {'a':'apple','b':'banana','c':'cherry'}
myFruit print('a' in myFruit) # True
print('apple' in myFruit) # False
end program.
***USE "VALUES" METHOD FOR SEARCHING DICT VALUES.
begin program python3.print('apple' in myFruit.values()) # True
end program.
Python 中的反斜杠
在 Python 中,反斜杠指示转义序列:两个字符的组合,其中第一个字符修改第二个字符的含义。 这在两个方向上都有效:
- 反斜杠为“普通”字符赋予特殊含义
- 反斜杠取消特殊字符的特殊含义。
第一种类型的一个常见示例是 \n
,其中反斜杠将 n
的含义从简单的“n”更改为换行符。
begin program python3.print('New line starts\nhere')
end program.
第二种类型的一个示例是 \'
,其中反斜杠将 '
(字符串的开头)的特殊含义更改为简单的“’”。
begin program python3.print('I don\'t know!') # I don't know!
end program.
为了在 Python 中指定路径(尤其是在使用 os
模块时),我们经常需要转义反斜杠本身。 我们可以通过使用两个反斜杠或通过将路径指定为原始字符串(在路径前加上 “r”)来实现。
***ESCAPE BACKSLASHES WITH BACKSLASHES.
begin program python3.= 'D:\\\SCRIPTS\\\NEW FOLDER'
myPath print(myPath) # D:\SCRIPTS\NEW FOLDER
end program.
***ESCAPE BACKSLASHES BY RAW STRING.
begin program python3.= r'D:\SCRIPTS\NEW FOLDER'
yourPath print(yourPath) # D:\SCRIPTS\NEW FOLDER
end program.
Python 中的方括号
在 Python 中,方括号要么
- 从某个对象(例如子字符串)中提取一部分,要么
- 指示一个 Python 列表对象(Python list object)。
下面的语法给出了一些从对象中提取元素的示例,此过程在 Python 中称为“切片(slicing)”。
***EXTRACT FIRST 5 CHARACTERS (=SUBSTRING) FROM STRING OBJECT.
begin program python3.= 'Ruben Geert van den Berg'
myName print(myName[:5]) # Ruben
end program.
***EXTRACT LAST ELEMENT FROM TUPLE.
begin program python3.= (1,3,5,7,9)
myTuple print(myTuple[-1]) # 9
end program.
***EXTRACT DICT VALUE FOR KEY = 'a'.
begin program python3.= {'a':'apple','b':'banana','c':'cherry'}
myFruit print(myFruit['a']) # apple
end program.
零个或多个对象周围的方括号告诉您,这些对象组成一个 Python 列表对象。
***CREATE EMPTY LIST OBJECT WITH SQUARE BRACKETS.
begin program python3.= []
animals print(type(animals)) # <class 'list'>
end program.
begin program python3.print(animals) # [] tells you that animals is a list object
end program.
Python 中的圆括号
在 Python 中,圆括号要么
- 将两个或多个条件分组,要么
- 指示一个 Python 元组(Python tuple)。
如下面的示例所示,对于使用 “and” 和 “or” 运算符组合三个或更多条件,最好_始终_使用圆括号。
***LAST CONDITION MUST BE TRUE.
begin program python3.if ('a' in 'banana' or 'b' in 'banana') and 'd' in 'cherry':
print('Yes!')
else:
print('No!')
end program.
***FIRST CONDITION MUST BE TRUE.
begin program python3.if 'a' in 'banana' or ('b' in 'banana' and 'd' in 'cherry'):
print('Yes!')
else:
print('No!')
end program.
***UNCLEAR HOW CONDITIONS COMBINE...
begin program python3.if 'a' in 'banana' or 'b' in 'banana' and 'd' in 'cherry':
print('Yes!')
else:
print('No!')
end program.
Python 中的花括号
在 Python 中,花括号要么
- 构成文本替换的占位符,要么
- 指示一个 Python 字典对象(Python dict object)。
我们将在 SPSS Python 文本替换教程(SPSS Python Text Replacement Tutorial) 中介绍文本替换的不同选项,但我们也会在下面添加一个最小示例。
***USE {} AS PLACEHOLDER FOR TEXT REPLACEMENT.
begin program python3.= 'hello'
myGreeting print('Just say {}!'.format(myGreeting))
end program.
下面的示例演示了花括号也指示一个 Python 字典对象。
***USE {} TO INDICATE DICT OBJECT.
begin program python3.= {'a':'apple','b':'banana','c':'cherry'}
myFruit print(myFruit) # {'c': 'cherry', 'b': 'banana', 'a': 'apple'}
print(type(myFruit)) # <class 'dict'>
end program.
Python 加号运算符
在 Python 中,加号运算符要么
- 将两个或多个数字(例如 int 或 float 对象)相加,要么
- 将一个或多个元素添加到对象。
下面的示例演示了数值加法。
***NUMERIC ADDITION FOR FLOAT AND INT OBJECTS.
begin program python3.= 5
myInt = 1.23
myFloat print(myInt + myFloat) # 6.23
end program.
对于数字以外的对象(例如字符串或列表),加号运算符会将元素添加到它们。 如下所示,下面的示例演示了字符串对象的连接和将列表添加到另一个列表。
***PYTHON CONCATENATION WITH + OPERATOR.
begin program python3.= '23'
myDay = 'February'
myMonth = '2022'
myYear = myDay + ' ' + myMonth + ' ' + myYear
myDate print(myDate) # 23 February 2022
end program.
***ADD LIST TO LIST WITH +. NOTE: USE += FOR CHANGING MYLIST.
begin program python3.= [1,3,5]
myList print(myList + [7,9,11])
end program.
***ADD LIST TO LIST WITH EXTEND.
begin program python3.= [1,3,5]
myList 7,9,11])
myList.extend([print(myList)
end program.
Python 中的双星号
Python 中的双星号将某个数字提高到某个幂。
***PRINT 2 RAISED TO THE ZEROETH THROUGH 9TH POWER.
begin program python3.for pow in range(10):
print(2 ** pow)
end program.
快速提示:您可以使用 myNumber**(1 / k)
之类的表达式来查找某个数字的 k 次方根,包括平方根。 与 Excel、Googlesheet 和 SPSS 相比,除非您导入 math
模块并使用 math.sqrt()
,否则 sqrt()
在 Python 中不可用。
Python 中的双斜杠
Python 中的双斜杠用于向下取整除法:它将 x 除以 y 并截断结果。
***FLOOR DIVISION OF 10 BY 3.
begin program python3.print(10 // 3) # 3
end program.
Python 中的百分号
在 Python 中,百分号要么用于
- 数字的模函数(modulo function),要么
- 字符串对象中用于文本替换的占位符。
首先,模(不要与 modul us 混淆)返回从 y 中减去 x 的最大次数后的余数。 如下所示,它可用于检查数字是奇数还是偶数。
***CHECK IF INTEGERS 0 THROUGH 9 ARE EVEN OR ODD NUMBERS.
begin program python3.for myInt in range(10):
if (myInt % 2): # SHORTHAND FOR MODULO NOT ZERO
print('%s is an odd number.'%myInt)
else:
print('%s is an even number.'%myInt)
end program.
其次,百分号用作 Python 中文本替换的占位符。 准确地说,
%s
可以替换为字符串值,%d
可以替换为整数,并且%f
可以替换为浮点数。
请注意,与使用 .format()
的 花括号 相比,这些占位符在某种程度上已被弃用。 下面的语法显示了这两种方法的最小示例。
***TEXT REPLACEMENTS WITH % PLACEHOLDERS.
begin program python3.= 'Alexander'
name = 43
age print('%s is %d years old.'%(name,age)) # Alexander is 43 years old.
end program.
***TEXT REPLACEMENTS WITH {} PLACEHOLDERS.
begin program python3.= 'Alexander'
name = 43
age print('{} is {} years old.'.format(name,age)) # Alexander is 43 years old.
end program.
Python 加等于运算符
在 Python 中,加等于运算符用于
- 将一个数字添加到另一个数字,或
- 将一个元素添加到某个其他对象。
在任何一种情况下,a += b
都只是 a = a + b
的简写形式。 下面的语法给出了数字对象的快速示例。
***ADD 3 TO MYINTO VIA PLUS OPERATOR.
begin program python3.= 5
myInt = myInt + 3
myInt print(myInt) # 8
end program.
***ADD 3 TO MYINTO VIA PLUS-IS OPERATOR.
begin program python3.= 5
myInt += 3
myInt print(myInt) # 8
end program.
除了数值加法之外,+=
运算符还可以用于连接字符串或将元素添加到 Python 列表对象。 在后一种情况下,它充当 .extend
而不是 .append
,如下所示。
***CONCATENATE TO STRING WITH += OPERATOR.
begin program python3.= ''
myVars for ind in range(10):
+= 'v%s '%ind
myVars print(myVars) # ['v0', 'v1', 'v2', 'v3', 'v4', 'v5', 'v6', 'v7', 'v8', 'v9']
end program.
***FOR LIST, += OPERATOR IS SIMILAR TO EXTEND (NOT APPEND).
begin program python3.= []
myVars for ind in range(10):
+= ['v' + str(ind)]
myVars print(myVars) # v0 v1 v2 v3 v4 v5 v6 v7 v8 v9
end program.