Skip to content

Python 基本数据类型与运算符 ​

数据类型 ​

基于各类数据容器的特点,它们的应用场景如下

  1. 列表:一批数据,可修改、可重复的存储场景
  2. 元组:一批数据,不可修改、可重复的存储场景
  3. 字符串:一串字符串的存储场景
  4. 集合:一批数据,去重存储场景
  5. 字典:批数据,可用 Key 检索 Value 的存储场景

字符串 ​

#字符串为什么被称之为数据容器呢?

#字符串可以看做是字符的容器,支持下标索引特性

python
str = '123456789'
print(str[0:-1]) #12345678  输出第一个到倒数第二个的所有字符
print(str[::-1]) #字符串翻转
print(str[2:]) #3456789 #输出从第三个开始后的所有字符
print(str[1:9:3]) # 258 输出从第二个开始到第九个且每隔3个的字符(步长为3)
print(str * 2) #123456789123456789  输出字符串两次
print('hello\ncao')  # 使用反斜杠(\)+n转义特殊字符 \n换行
print(r'hello\ncao') #hello\ncao   # 在字符串前面添加一个 r,表示原始字符串,不会发生转义
#字符串的方法
s = ' hello world'
print(s.upper()) #大写
print(s.lower()) #小写
print(s.capitalize()) #首字母大写
print(s.title()) #每个单词首字母大写
print(s.index('e')) #查找字符串在字符串中的位置
print(s.replace('world', 'python')) #替换字符串
print(s.split(' ')) #分割字符串
print(s.strip()) #去除首尾空格
print(s.count('o')) #统计字符串中o出现的次数
str = '123456789'
print(str[0:-1]) #12345678  输出第一个到倒数第二个的所有字符
print(str[::-1]) #字符串翻转
print(str[2:]) #3456789 #输出从第三个开始后的所有字符
print(str[1:9:3]) # 258 输出从第二个开始到第九个且每隔3个的字符(步长为3)
print(str * 2) #123456789123456789  输出字符串两次
print('hello\ncao')  # 使用反斜杠(\)+n转义特殊字符 \n换行
print(r'hello\ncao') #hello\ncao   # 在字符串前面添加一个 r,表示原始字符串,不会发生转义
#字符串的方法
s = ' hello world'
print(s.upper()) #大写
print(s.lower()) #小写
print(s.capitalize()) #首字母大写
print(s.title()) #每个单词首字母大写
print(s.index('e')) #查找字符串在字符串中的位置
print(s.replace('world', 'python')) #替换字符串
print(s.split(' ')) #分割字符串
print(s.strip()) #去除首尾空格
print(s.count('o')) #统计字符串中o出现的次数

数字 ​

随机数
import random
print(random.randint(1,100))
随机数
import random
print(random.randint(1,100))
数学函数 ​
函数返回值 ( 描述 )
abs(x)返回数字的绝对值,如 abs(-10) 返回 10
ceil(x)返回数字的上入整数,如 math.ceil(4.1) 返回 5
cmp(x, y)如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。 Python 3 已废弃,使用 (x>y)-(x<y) 替换。
exp(x)返回 e 的 x 次幂(ex),如 math.exp(1) 返回 2.718281828459045
fabs(x)以浮点数形式返回数字的绝对值,如 math.fabs(-10) 返回 10.0
floor(x)返回数字的下舍整数,如 math.floor(4.9)返回 4
log(x)如 math.log(math.e)返回 1.0,math.log(100,10)返回 2.0
log10(x)返回以 10 为基数的 x 的对数,如 math.log10(100)返回 2.0
max(x1, x2,...)返回给定参数的最大值,参数可以为序列。
min(x1, x2,...)返回给定参数的最小值,参数可以为序列。
modf(x)返回 x 的整数部分与小数部分,两部分的数值符号与 x 相同,整数部分以浮点型表示。
pow(x, y)x**y 运算后的值。
[round(x ,n])返回浮点数 x 的四舍五入值,如给出 n 值,则代表舍入到小数点后的位数。其实准确的说是保留值将保留到离上一位更近的一端。
sqrt(x)返回数字 x 的平方根。

列表 ​

  1. 列表的下标索引是什么?

    列表的每一个元素,都有编号称之为下标索引从前向后的方向,编号从 0 开始递增从后向前的方向,编号从-1 开始递减

  2. 如何通过下标索引取出对应位置的元素呢?

    列表[下标],即可取出

python
list1 = [1,2,3,1,1,1]
list2 = [4,5,6]
list1.append(1)  #末尾添加
list1.extend(list2) #将容器内容依次取出,依次在末尾添加
list1.insert(3,999) #指定位置添加
del list1[2] #删除指定下标
list1.pop(3) #删除指定下标
list1.remove(999) #删除第一个符合的元素
# list1.clear() #清空列表
print(list1.count(1)) #统计该元素出现的次数
print(list1.index(6)) #查找指定元素在列表的下表,找不到报错valueError
print(len(list1)) #统计列表有多少个元素
print(list1)
list1 = [1,2,3,1,1,1]
list2 = [4,5,6]
list1.append(1)  #末尾添加
list1.extend(list2) #将容器内容依次取出,依次在末尾添加
list1.insert(3,999) #指定位置添加
del list1[2] #删除指定下标
list1.pop(3) #删除指定下标
list1.remove(999) #删除第一个符合的元素
# list1.clear() #清空列表
print(list1.count(1)) #统计该元素出现的次数
print(list1.index(6)) #查找指定元素在列表的下表,找不到报错valueError
print(len(list1)) #统计列表有多少个元素
print(list1)

布尔值 ​

python
a = True
b = False

# 比较运算符
print(2 < 3)   # True
print(2 == 3)  # False

# 逻辑运算符
print(a and b)  # False
print(a or b)   # True
print(not a)    # False

# 类型转换
print(int(a))   # 1
print(float(b)) # 0.0
print(str(a))   # "True"
a = True
b = False

# 比较运算符
print(2 < 3)   # True
print(2 == 3)  # False

# 逻辑运算符
print(a and b)  # False
print(a or b)   # True
print(not a)    # False

# 类型转换
print(int(a))   # 1
print(float(b)) # 0.0
print(str(a))   # "True"

元组 ​

python
1.元组的本质
	够存储多个数据 并且能够方便的获取整体或者局部,但是元组中已存在的数据不能够轻易更改
2.元组的使用方法
	元组和列表的使用方法类似用小括号括起来,内部的数据类型用逗号隔开逗号后面空一格开始下一个数据类型的编写
	元组中的排序方式和正常生活中有点不太一样是从0开始排序的所以只要再当前数字上减一即可
与字符串一样,元组的元素不能修改。
3、元组也可以被索引和切片,方法一样。
4、注意构造包含 0 或 1 个元素的元组的特殊语法规则。
5、元组也可以使用+操作符进行拼接
6、元祖不可修改可以修改里面的list
基本使用
tuple1 = ('a', 'b', 'c', 'd', 'e')
tuple2 = (1,2,3,4)
print(tuple1[0:4]) #('a', 'b', 'c', 'd')
print(tuple1 + tuple2) #('a', 'b', 'c', 'd', 'e', 1, 2, 3, 4)

list = [1,2,3,4]
list_tuple = tuple(list)  #列表转元组
print(type(list_tuple))  #元组取值跟列表差不多
yz = (1,2,3,4,1)
print(yz.index(3)) #查找元素的索引
print(yz.count(1)) #查找元素的个数
print(len(yz)) #查找元素的个数
1.元组的本质
	够存储多个数据 并且能够方便的获取整体或者局部,但是元组中已存在的数据不能够轻易更改
2.元组的使用方法
	元组和列表的使用方法类似用小括号括起来,内部的数据类型用逗号隔开逗号后面空一格开始下一个数据类型的编写
	元组中的排序方式和正常生活中有点不太一样是从0开始排序的所以只要再当前数字上减一即可
与字符串一样,元组的元素不能修改。
3、元组也可以被索引和切片,方法一样。
4、注意构造包含 0 或 1 个元素的元组的特殊语法规则。
5、元组也可以使用+操作符进行拼接
6、元祖不可修改可以修改里面的list
基本使用
tuple1 = ('a', 'b', 'c', 'd', 'e')
tuple2 = (1,2,3,4)
print(tuple1[0:4]) #('a', 'b', 'c', 'd')
print(tuple1 + tuple2) #('a', 'b', 'c', 'd', 'e', 1, 2, 3, 4)

list = [1,2,3,4]
list_tuple = tuple(list)  #列表转元组
print(type(list_tuple))  #元组取值跟列表差不多
yz = (1,2,3,4,1)
print(yz.index(3)) #查找元素的索引
print(yz.count(1)) #查找元素的个数
print(len(yz)) #查找元素的个数

set 集合 ​

python
#集合的特点
#1.集合中的元素是无序的(不支持下标取值)
#2.集合中的元素不能重复
#3.可以容纳任意类型

#集合的方法
s = {1,2,3,4}
s.add(5) #添加元素 {1,2,3,4,5}
s.remove(4) #删除元素 {1,2,3,5}
s.pop() #随机删除一个元素 {1,2,3}
s.clear() #清空 {}
print(s.difference({1,2,3})) #差集 {4}
s.difference_update({1,2,3}) #差集 在集合1中,删除集合2中的元素,集合1被修改,集合2不被修改 {4}
print(s.union({5,7,8})) #得到一个新集合,集合1,2不变
print(s)

set1 = {1,2,3,4,3,1,2,3}
print(type(set1)) #<class 'set'>
print(set1) #{1, 2, 3, 4}  set会去重
list1 = [1,2,3,4,2,121,32,1,2]
print(list(set(list1))) # 利用set列表去重

# set可以进行集合运算
a = set('abracadabra')
b = set('alacazam')
print(a)
print(a - b)     # a 和 b 的差集
print(a | b)     # a 和 b 的并集
print(a & b)     # a 和 b 的交集
print(a ^ b)     # a 和 b 中不同时存在的元素
#集合的特点
#1.集合中的元素是无序的(不支持下标取值)
#2.集合中的元素不能重复
#3.可以容纳任意类型

#集合的方法
s = {1,2,3,4}
s.add(5) #添加元素 {1,2,3,4,5}
s.remove(4) #删除元素 {1,2,3,5}
s.pop() #随机删除一个元素 {1,2,3}
s.clear() #清空 {}
print(s.difference({1,2,3})) #差集 {4}
s.difference_update({1,2,3}) #差集 在集合1中,删除集合2中的元素,集合1被修改,集合2不被修改 {4}
print(s.union({5,7,8})) #得到一个新集合,集合1,2不变
print(s)

set1 = {1,2,3,4,3,1,2,3}
print(type(set1)) #<class 'set'>
print(set1) #{1, 2, 3, 4}  set会去重
list1 = [1,2,3,4,2,121,32,1,2]
print(list(set(list1))) # 利用set列表去重

# set可以进行集合运算
a = set('abracadabra')
b = set('alacazam')
print(a)
print(a - b)     # a 和 b 的差集
print(a | b)     # a 和 b 的并集
print(a & b)     # a 和 b 的交集
print(a ^ b)     # a 和 b 中不同时存在的元素

Dictionary(字典) ​

python
列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。
键(key)必须使用不可变类型。
在同一个字典中,键(key)必须是唯一的。
obg = {'name':"二狗",'age':age}
print(obg['age'])  # 取值
print(len(obg))  # 获取长度
print('name' in obg , 'age' not in obg) # in obg里是否包含name  not in 不包含
obg.update(obg2)  # 合并
obg.pop('a') #取出对应的值,并删除键值对 {b:2,c:3,d:4}
obg.clear() #清空
print (tinydict.keys())   # 输出所有键
print (tinydict.values()) # 输出所有值
列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。
键(key)必须使用不可变类型。
在同一个字典中,键(key)必须是唯一的。
obg = {'name':"二狗",'age':age}
print(obg['age'])  # 取值
print(len(obg))  # 获取长度
print('name' in obg , 'age' not in obg) # in obg里是否包含name  not in 不包含
obg.update(obg2)  # 合并
obg.pop('a') #取出对应的值,并删除键值对 {b:2,c:3,d:4}
obg.clear() #清空
print (tinydict.keys())   # 输出所有键
print (tinydict.values()) # 输出所有值

数据类型转换 ​

隐式转换 ​

python
num_int = 123
num_flo = 1.23
num_new = num_int + num_flo  #num_new: 值为: 124.23
num_int = 123
num_flo = 1.23
num_new = num_int + num_flo  #num_new: 值为: 124.23

显示转换 ​

python
int
x = int('2') #2
y = int(2.8) #2
float
x = float(1) #1.0
x = float('4.2') #4.2
str
z = str(3.0)  # z 输出结果为 '3.0'
int
x = int('2') #2
y = int(2.8) #2
float
x = float(1) #1.0
x = float('4.2') #4.2
str
z = str(3.0)  # z 输出结果为 '3.0'

以下几个内置的函数可以执行数据类型之间的转换。这些函数返回一个新的对象,表示转换的值。 ​

函数描述
int(x [,base])将 x 转换为一个整数
float(x)将 x 转换到一个浮点数
complex(real [,imag])创建一个复数
str(x)将对象 x 转换为字符串
repr(x)将对象 x 转换为表达式字符串
eval(str)用来计算在字符串中的有效 Python 表达式,并返回一个对象
tuple(s)将序列 s 转换为一个元组
list(s)将序列 s 转换为一个列表
set(s)转换为可变集合
dict(d)创建一个字典。d 必须是一个 (key, value)元组序列。
frozenset(s)转换为不可变集合
chr(x)将一个整数转换为一个字符
ord(x)将一个字符转换为它的整数值
hex(x)将一个整数转换为一个十六进制字符串
oct(x)将一个整数转换为一个八进制字符串
max()容器最大元素
min()容器最小元素
sorted(list1,reverse=True)True 降序排序,False 升序排序

dataclass(数据类) ​

Python 3.7+ 提供的数据类装饰器,自动生成 __init__、__repr__、__eq__ 等方法:

python
from dataclasses import dataclass, field, asdict, astuple

@dataclass
class Person:
    name: str
    age: int = 0                    # 默认值
    tags: list[str] = field(default_factory=list)  # 可变类型需用 default_factory

# 使用
p = Person("Alice", 30)
print(p)              # Person(name='Alice', age=30)
print(p == Person("Alice", 30))  # True

# 不可变数据类
@dataclass(frozen=True)
class Point:
    x: float
    y: float

# 转换为字典/元组
d = asdict(p)
t = astuple(p)

# 继承
@dataclass
class Employee(Person):
    employee_id: str = ""
from dataclasses import dataclass, field, asdict, astuple

@dataclass
class Person:
    name: str
    age: int = 0                    # 默认值
    tags: list[str] = field(default_factory=list)  # 可变类型需用 default_factory

# 使用
p = Person("Alice", 30)
print(p)              # Person(name='Alice', age=30)
print(p == Person("Alice", 30))  # True

# 不可变数据类
@dataclass(frozen=True)
class Point:
    x: float
    y: float

# 转换为字典/元组
d = asdict(p)
t = astuple(p)

# 继承
@dataclass
class Employee(Person):
    employee_id: str = ""

enum(枚举) ​

python
from enum import Enum, auto, IntEnum, StrEnum

class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3

# 自动赋值
class Status(Enum):
    PENDING = auto()
    APPROVED = auto()
    REJECTED = auto()

# 字符串枚举(Python 3.11+)
class HttpMethod(StrEnum):
    GET = "GET"
    POST = "POST"
    PUT = "PUT"
    DELETE = "DELETE"

# 使用
print(Color.RED)        # Color.RED
print(Color.RED.name)   # RED
print(Color.RED.value)  # 1

# 遍历
for c in Color:
    print(c)

# 类型安全的函数参数
def set_status(s: Status):
    if s == Status.APPROVED:
        print("approved")

### 格式化输出

转义字符
from enum import Enum, auto, IntEnum, StrEnum

class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3

# 自动赋值
class Status(Enum):
    PENDING = auto()
    APPROVED = auto()
    REJECTED = auto()

# 字符串枚举(Python 3.11+)
class HttpMethod(StrEnum):
    GET = "GET"
    POST = "POST"
    PUT = "PUT"
    DELETE = "DELETE"

# 使用
print(Color.RED)        # Color.RED
print(Color.RED.name)   # RED
print(Color.RED.value)  # 1

# 遍历
for c in Color:
    print(c)

# 类型安全的函数参数
def set_status(s: Status):
    if s == Status.APPROVED:
        print("approved")

### 格式化输出

转义字符

\n 换行 \t 格式化

方法一 info = 您订单尾号位%s的%s快递已经由[前台代收],请尽快领取。如有问题请联系%s或短信回复N print(info % (2827, 京东, 12345678900)) 方法二fmoat f print(f'您订单尾号位{变量}的{变量}快递已经由[前台代收],请尽快领取。如有问题请联系{变量}或短信回复N')


## 运算符

### 算术运算符

以下假设变量 **a=10**,变量 **b=21**:

| 运算符 | 描述                                            | 实例                      |
| :----- | :---------------------------------------------- | :------------------------ |
| +      | 加 - 两个对象相加                               | a + b 输出结果 31         |
| -      | 减 - 得到负数或是一个数减去另一个数             | a - b 输出结果 -11        |
| \*     | 乘 - 两个数相乘或是返回一个被重复若干次的字符串 | a \* b 输出结果 210       |
| /      | 除 - x 除以 y                                   | b / a 输出结果 2.1        |
| %      | 取模 - 返回除法的余数                           | b % a 输出结果 1          |
| \*\*   | 幂 - 返回 x 的 y 次幂                           | a\*\*b 为 10 的 21 次方   |
| //     | 取整除 - 往小的方向取整数                       | `>>> 9//2 4 >>> -9//2 -5` |

### 比较运算符

以下假设变量 a 为 10,变量 b 为 20:

| 运算符 | 描述                                                                                                                                  | 实例                  |
| :----- | :------------------------------------------------------------------------------------------------------------------------------------ | :-------------------- |
| ==     | 等于 - 比较对象是否相等                                                                                                               | (a == b) 返回 False。 |
| !=     | 不等于 - 比较两个对象是否不相等                                                                                                       | (a != b) 返回 True。  |
| >      | 大于 - 返回 x 是否大于 y                                                                                                              | (a > b) 返回 False。  |
| <      | 小于 - 返回 x 是否小于 y。所有比较运算符返回 1 表示真,返回 0 表示假。这分别与特殊的变量 True 和 False 等价。注意,这些变量名的大写。 | (a < b) 返回 True。   |
| >=     | 大于等于 - 返回 x 是否大于等于 y。                                                                                                    | (a >= b) 返回 False。 |
| <=     | 小于等于 - 返回 x 是否小于等于 y。                                                                                                    | (a <= b) 返回 True。  |

### 赋值运算符

以下假设变量 a 为 10,变量 b 为 20:

| 运算符 | 描述                                                                 | 实例                                                                                                                                  |
| :----- | :------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------ |
| =      | 简单的赋值运算符                                                     | c = a + b 将 a + b 的运算结果赋值为 c                                                                                                 |
| +=     | 加法赋值运算符                                                       | c += a 等效于 c = c + a                                                                                                               |
| -=     | 减法赋值运算符                                                       | c -= a 等效于 c = c - a                                                                                                               |
| \*=    | 乘法赋值运算符                                                       | c _= a 等效于 c = c _ a                                                                                                               |
| /=     | 除法赋值运算符                                                       | c /= a 等效于 c = c / a                                                                                                               |
| %=     | 取模赋值运算符                                                       | c %= a 等效于 c = c % a                                                                                                               |
| \*\*=  | 幂赋值运算符                                                         | c **= a 等效于 c = c ** a                                                                                                             |
| //=    | 取整除赋值运算符                                                     | c //= a 等效于 c = c // a                                                                                                             |
| :=     | 海象运算符,可在表达式内部为变量赋值。**Python3.8 版本新增运算符**。 | 在这个示例中,赋值表达式可以避免调用 len() 两次:`if (n := len(a)) > 10:    print(f"List is too long ({n} elements, expected <= 10)")` |

### 位运算符

按位运算符是把数字看作二进制来进行计算的。Python 中的按位运算法则如下:

下表中变量 a 为 60,b 为 13 二进制格式如下:

```python
a = 0011 1100
b = 0000 1101
-----------------
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a  = 1100 0011

## 运算符

### 算术运算符

以下假设变量 **a=10**,变量 **b=21**:

| 运算符 | 描述                                            | 实例                      |
| :----- | :---------------------------------------------- | :------------------------ |
| +      | 加 - 两个对象相加                               | a + b 输出结果 31         |
| -      | 减 - 得到负数或是一个数减去另一个数             | a - b 输出结果 -11        |
| \*     | 乘 - 两个数相乘或是返回一个被重复若干次的字符串 | a \* b 输出结果 210       |
| /      | 除 - x 除以 y                                   | b / a 输出结果 2.1        |
| %      | 取模 - 返回除法的余数                           | b % a 输出结果 1          |
| \*\*   | 幂 - 返回 x 的 y 次幂                           | a\*\*b 为 10 的 21 次方   |
| //     | 取整除 - 往小的方向取整数                       | `>>> 9//2 4 >>> -9//2 -5` |

### 比较运算符

以下假设变量 a 为 10,变量 b 为 20:

| 运算符 | 描述                                                                                                                                  | 实例                  |
| :----- | :------------------------------------------------------------------------------------------------------------------------------------ | :-------------------- |
| ==     | 等于 - 比较对象是否相等                                                                                                               | (a == b) 返回 False。 |
| !=     | 不等于 - 比较两个对象是否不相等                                                                                                       | (a != b) 返回 True。  |
| >      | 大于 - 返回 x 是否大于 y                                                                                                              | (a > b) 返回 False。  |
| <      | 小于 - 返回 x 是否小于 y。所有比较运算符返回 1 表示真,返回 0 表示假。这分别与特殊的变量 True 和 False 等价。注意,这些变量名的大写。 | (a < b) 返回 True。   |
| >=     | 大于等于 - 返回 x 是否大于等于 y。                                                                                                    | (a >= b) 返回 False。 |
| <=     | 小于等于 - 返回 x 是否小于等于 y。                                                                                                    | (a <= b) 返回 True。  |

### 赋值运算符

以下假设变量 a 为 10,变量 b 为 20:

| 运算符 | 描述                                                                 | 实例                                                                                                                                  |
| :----- | :------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------ |
| =      | 简单的赋值运算符                                                     | c = a + b 将 a + b 的运算结果赋值为 c                                                                                                 |
| +=     | 加法赋值运算符                                                       | c += a 等效于 c = c + a                                                                                                               |
| -=     | 减法赋值运算符                                                       | c -= a 等效于 c = c - a                                                                                                               |
| \*=    | 乘法赋值运算符                                                       | c _= a 等效于 c = c _ a                                                                                                               |
| /=     | 除法赋值运算符                                                       | c /= a 等效于 c = c / a                                                                                                               |
| %=     | 取模赋值运算符                                                       | c %= a 等效于 c = c % a                                                                                                               |
| \*\*=  | 幂赋值运算符                                                         | c **= a 等效于 c = c ** a                                                                                                             |
| //=    | 取整除赋值运算符                                                     | c //= a 等效于 c = c // a                                                                                                             |
| :=     | 海象运算符,可在表达式内部为变量赋值。**Python3.8 版本新增运算符**。 | 在这个示例中,赋值表达式可以避免调用 len() 两次:`if (n := len(a)) > 10:    print(f"List is too long ({n} elements, expected <= 10)")` |

### 位运算符

按位运算符是把数字看作二进制来进行计算的。Python 中的按位运算法则如下:

下表中变量 a 为 60,b 为 13 二进制格式如下:

```python
a = 0011 1100
b = 0000 1101
-----------------
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a  = 1100 0011
运算符描述实例
&按位与运算符:参与运算的两个值,如果两个相应位都为 1,则该位的结果为 1,否则为 0(a & b) 输出结果 12 ,二进制解释: 0000 1100
|按位或运算符:只要对应的二个二进位有一个为 1 时,结果位就为 1。(a | b) 输出结果 61 ,二进制解释: 0011 1101
^按位异或运算符:当两对应的二进位相异时,结果为 1(a ^ b) 输出结果 49 ,二进制解释: 0011 0001
~按位取反运算符:对数据的每个二进制位取反,即把 1 变为 0,把 0 变为 1。~x 类似于 -x-1(~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。
<<左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补 0。a << 2 输出结果 240 ,二进制解释: 1111 0000
>>右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数a >> 2 输出结果 15 ,二进制解释: 0000 1111

逻辑运算符 ​

Python 语言支持逻辑运算符,以下假设变量 a 为 10, b 为 20:

运算符逻辑表达式描述实例
andx and y布尔"与" - 如果 x 为 False,x and y 返回 x 的值,否则返回 y 的计算值。(a and b) 返回 20。
orx or y布尔"或" - 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值。(a or b) 返回 10。
notnot x布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。not(a and b) 返回 False
python
a = True
b = False
print(a and b)  #False 相当于js &&
print(a or b) #True  相当于js ||
print(not(a and b))  #True 相当于取反
a = True
b = False
print(a and b)  #False 相当于js &&
print(a or b) #True  相当于js ||
print(not(a and b))  #True 相当于取反

成员运算符 ​

Python 还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。

运算符描述实例
in如果在指定的序列中找到值返回 True,否则返回 False。x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
not in如果在指定的序列中没有找到值返回 True,否则返回 False。x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。
python
a = 10
b = 20
list = [1, 2, 3, 4, 5 ]
if ( a in list ):
   print ("1 - 变量 a 在给定的列表中 list 中")
else:
   print ("1 - 变量 a 不在给定的列表中 list 中")
变量 a 不在给定的列表中 list 中

if ( b not in list ):
   print ("2 - 变量 b 不在给定的列表中 list 中")
else:
   print ("2 - 变量 b 在给定的列表中 list 中")
变量 b 不在给定的列表中 list 中

# 修改变量 a 的值
a = 2
if ( a in list ):
   print ("3 - 变量 a 在给定的列表中 list 中")
else:
   print ("3 - 变量 a 不在给定的列表中 list 中")
变量 a 在给定的列表中 list 中
a = 10
b = 20
list = [1, 2, 3, 4, 5 ]
if ( a in list ):
   print ("1 - 变量 a 在给定的列表中 list 中")
else:
   print ("1 - 变量 a 不在给定的列表中 list 中")
变量 a 不在给定的列表中 list 中

if ( b not in list ):
   print ("2 - 变量 b 不在给定的列表中 list 中")
else:
   print ("2 - 变量 b 在给定的列表中 list 中")
变量 b 不在给定的列表中 list 中

# 修改变量 a 的值
a = 2
if ( a in list ):
   print ("3 - 变量 a 在给定的列表中 list 中")
else:
   print ("3 - 变量 a 不在给定的列表中 list 中")
变量 a 在给定的列表中 list 中