算术运算符
// 整除(地板除) 3 // 4
print(3 // 4) # 0
** 幂 2 ** 3
print(2 ** 3) # 8
逻辑运算符
and 与 (3 > 2) and (3 < 5)
or 或 (1 > 3) or (9 < 2)
not 非 not (2 > 1)
位运算符
~
|按位取反|~4
&
|按位与 |4 & 5
|
|按位或 |4 | 5
^
|按位异或|4 ^ 5
<<
|左移 |4 << 2
>>
|右移 |4 >> 2
print(bin(4)) # 0b100
print(bin(5)) # 0b101
print(bin(~4), ~4) # -0b101 -5
print(bin(4 & 5), 4 & 5) # 0b100 4
print(bin(4 | 5), 4 | 5) # 0b101 5
print(bin(4 ^ 5), 4 ^ 5) # 0b1 1
print(bin(4 << 2), 4 << 2) # 0b10000 16
print(bin(4 >> 2), 4 >> 2) # 0b1 1
三元运算符
small = x if x < y else y
其他运算符
in 存在
‘A’ in [‘A’, ‘B’, ‘C’]
not in 不存在
‘h’ not in [‘A’, ‘B’, ‘C’]
is 是
“hello” is “hello”
not is 不是
“hello” is not “hello”
is, is not 对比的是两个变量的内存地址
==, != 对比的是两个变量的值
比较的两个变量,指向的都是地址不可变的类型,那么is,is not 和 ==,!= 是完全等价的。
对比的两个变量,指向的是地址可变的类型,则两者是有区别的。
Python中的数据包括:Number(包括Int,Float,Bool和Complex),String,Tuple,List,Dict,Set。
这几种数据类型按照是否可变,有如下分类:
不可变类型:Number
,String
,Tuple
(运算后会重新创建新的对象)
可变类型:List
,Dict
,Set
(无论创建多少个,只要值相同,都指向同个内存地址;所以改一个,另一个也会改)
运算符的优先级
一元运算符优于二元运算符。
先算术运算,后移位运算,最后位运算。
逻辑运算最后结合。
变量和赋值
在使用变量之前,需要对其先赋值。
变量名可以包括字母、数字、下划线、但变量名不能以数字开头。
Python 变量名是大小写敏感的,foo != Foo。
数据类型与转换
类型 | 名称 | 示例 |
---|---|---|
int | 整型 | <class ‘int’> -876, 10 |
float | 浮点型 | <class ‘float’> 3.149, 11.11 |
bool | 布尔型 | <class ‘bool’> True, False |
a = 1532
print(a, type(a))
# 1031 <class 'int'>
除了直接给变量赋值 True 和 False,还可以用 bool(X) 来创建变量,其中 X 可以是
基本类型:整型、浮点型、布尔型
容器类型:字符串、元组、列表、字典和集合
bool 作用在基本类型变量:X 只要不是整型 0、浮点型 0.0,bool(X) 就是 True,其余就是 False。
bool 作用在容器类型变量:X 只要不是空的变量,bool(X) 就是 True,其余就是 False。
确定bool(X) 的值是 True 还是 False,就看 X 是不是空,空的话就是 False,不空的话就是 True。
对于数值变量,0, 0.0 都可认为是空的。
对于容器变量,里面没元素就是空的。
要判断两个类型是否相同推荐使用 isinstance()
。
type() 不会认为子类是一种父类类型,不考虑继承关系。
isinstance() 会认为子类是一种父类类型,考虑继承关系。
print函数
end参数的默认值为\n。没有参数时,每次输出后都会换行。
每次输出结束都用end
设置的参数&
结尾,并没有默认换行。
print(1, end='&')
dic = {'a':1, 'b':2, 'c':3}
for key,value in dic.items():
print(key, value, sep=':',end=" ")
# a:1 b:2 c:3
位运算
略过
条件语句
if(2>1 and not 3>2):
print("成功")
else:
print('失败')
temp = input("猜一个数字:") # input自动转成str
循环
s[:-1] # 等价于 s[0:len(s)]
,除了最后一个元素
range()函数——左闭右开
range([start,] stop[, step=1])
enumerate()函数
enumerate(sequence, [start=0])
- sequence:一个序列、迭代器或其他支持迭代对象。
- start:下标起始位置。
- 返回 enumerate(枚举) 对象
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
lst = list(enumerate(seasons))
enumerate()与 for 循环的结合使用。
for i, a in enumerate(A)
do something with a
用 enumerate(A) 不仅返回了 A 中的元素,还顺便给该元素一个索引值 (默认从 0 开始)。此外,用
enumerate(A, j)
还可以确定索引起始值为 j。
【例子】
languages = ['Python', 'R', 'Matlab', 'C++']
for language in languages:
print('I love', language)
print('Done!')
# I love Python
# I love R
# I love Matlab
# I love C++
# Done!
for i, language in enumerate(languages, 2):
print(i, 'I love', language)
print('Done!')
# 2 I love Python
# 3 I love R
# 4 I love Matlab
# 5 I love C++
# Done!