1.多行注释
2.浮点数计算
import decimal a = decimal.Decimal('0.1') b = decimal.Decimal('0.2') print(a + b)
3.复数表示
它们都是以浮点数的形式存放的,如果将一个复数赋值给一个变量 x,则可以通过 x.real 访问该复数的实部,x.imag 访问其虚部:
import decimal y = 1+2j print(y.real) #实部 print(y.imag) #虚部
4.运算符
(5)双斜杠(//)表示一种特殊的除法 —— 地板除。地板除原理是取比目标结果小的最大整数:
5.使用 bool() 函数可以直接给出 True 或者 False 的结果:
结果是 True 的情况非常多,但 False 却是屈指可数,下面这些几乎就是结果为 False 的所有情况:
- 定义为 False 的对象:None 和 False
- 值为 0 的数字类型:0, 0.0, 0j, Decimal(0), Fraction(0, 1)
- 空的序列和集合:'', (), [], {}, set(), range(0)
6.
逻辑运算符
Python 总共有三个逻辑运算符:and、or 和 not。
7.运算符优先级
优先级 | 运算符 | 描述 |
1 | lambda | Lambda 表达式 |
2 | if - else | 条件表达式 |
3 | or | 布尔“或” |
4 | and | 布尔“与” |
5 | not x | 布尔“非” |
6 | in, not in, is, is not, <, <=,>, >=, !=, == | 成员测试,同一性测试,比较 |
7 | | | 按位或 |
8 | ^ | 按位异或 |
9 | & | 按位与 |
10 | <<, >> | 移位 |
11 | +, - | 加法,减法 |
12 | *, @, /, //, % | 乘法,矩阵乘法,除法,地板除,取余数 |
13 | +x,-x, ~x | 正号,负号,按位非(翻转) |
14 | ** | 指数 |
15 | await x | Await 表达式 |
16 | x[index], x[index:index], x(arguments...), x.attribute | 下标,切片,函数调用,属性引用 |
17 | (expressions...), [expressions...], {key: value...}, {expressions...} | 绑定或元组显示,列表显示,字典显示,集合显示 |
8.循环结构
while 条件:
某条语句或某个代码块
死循环:
>>> while True:
... print("作为一段没有灵魂的代码,我的任务就是不断地干活!")
break 语句
在循环体内,一旦遇到 break 语句,Python 二话不说马上就会跳出循环体,即便这时候循环体内还有待执行的语句。
continue 语句
实现跳出循环体还有另外一个语句,那就是 continue 语句。
continue 语句也会跳出循环体,但是,它只是跳出本一轮循环,它还会回到循环体的条件判断位置,然后继续下一轮循环(如果条件还满足的话)。
注意它和 break 语句两者的区别:
- continue 语句是跳出本次循环,回到循环的开头
- break 语句则是直接跳出循环体,继续执行后面的语句
- while-else 可以非常容易地检测到循环的退出情况。
while day <= 7:
... answer = input("今天有好好学习吗?")
... if answer != "有":
... break
... day += 1
... else:
... print("非常棒,你已经坚持了7天连续学习!")对于嵌套循环来说,无论是 break 语句还是 continue 语句,它们只能作用于一层循环体。
9.range()
range() 会帮你生成一个数字序列,它的用法有以下三种:
- range(stop) - 将生成一个从 0 开始,到 stop(不包含)的整数数列
- range(start, stop) - 将生成一个从 start 开始,到 stop(不包含)的整数数列
- range(start, stop, step) - 将生成一个从 start 开始,到 stop(不包含)结束,步进跨度为 step 的整数数列
10. 列表
10.1创建列表
rhyme = [1, 2, 3, 4, 5, "上山打老虎"]
- for each in rhyme: #访问列表每一个元素
- ... print(each)
- rhyme[0] #访问第一个元素
- >>> rhyme[0:3]
- [1, 2, 3]
- >>> rhyme[3:6]
- [4, 5, '上山打老虎'] #切片访问
10.2 列表中添加元素
向列表添加元素可以使用 append() 方法,它的功能是在列表的末尾添加一个指定的元素。extend() 方法则允许一次性添加多个元素,insert() 方法允许你在列表的任意位置添加数据。
>>> s = [1, 2, 3, 4, 5]
>>> # 下面的做法等同于 s.append(6)
>>> s[len(s):] = [6]
>>> s
[1, 2, 3, 4, 5, 6]
>>> # 下面的做法等同于 s.extend([7, 8, 9])
>>> s[len(s):] = [7, 8, 9]
>>> s
[1, 2, 3, 4, 5, 6, 7, 8, 9]
inser(a,b) 方法有两个参数,第一个参数指定的是插入的位置,第二个参数指定的是插入的元素:
>>> s = [1, 3, 4, 5]
>>> s.insert(1, 2)
>>> s
[1, 2, 3, 4, 5]
10.3 删(删除列表中的数据)
利用 remove() 方法,可以将列表中指定的元素删除:
>>> heros.remove("灭霸")
>>> heros
['钢铁侠', '绿巨人', '黑寡妇', '鹰眼', '灭霸', '雷神']
那么可以使用 pop() 方法,它的参数就是元素的下标索引值:
pop() 方法这个参数其实是可选的,如果你没有指定一个参数,那么它“弹”出来的就是最后一个元素:
>>> heros.pop(2)
'黑寡妇'
>>> heros
['钢铁侠', '绿巨人', '鹰眼', '灭霸', '雷神']
如果想要一步到位清空列表,可以使用 clear() 方法:
>>> heros.clear()
>>> heros
[]
10.4修改元素
(1)按照索引赋值
>>> heros = ['蜘蛛侠', '绿巨人', '黑寡妇', '鹰眼', '灭霸', '雷神']
>>> heros[4] = "钢铁侠"
>>> heros
['蜘蛛侠', '绿巨人', '黑寡妇', '鹰眼', '钢铁侠', '雷神']
>>> heros[3:] = ["武松", "林冲", "李逵"]
>>> heros
['蜘蛛侠', '绿巨人', '黑寡妇', '武松', '林冲', '李逵']
(2)排序与反转
nums = [3, 1, 9, 6, 8, 3, 5, 3]
nums.sort()
nums
1, 3, 3, 3, 5, 6, 8, 9]
>>> nums.reverse()
>>> nums
[9, 8, 6, 5, 3, 3, 3, 1]
nums.sort(reverse=True) # 从大到小排序
(3)查询
nums.count(3) # nums 这个列表里面到底有多少个 3,
heros.index("绿巨人") #绿巨人的索引值
nums.index(3, 1, 7) #(start,step,stop)
(4)拷贝列表
>>> nums_copy1 = nums.copy()
>>> nums_copy1
[3, 1, 9, 6, 8, 3, 5, 3]
>>> nums_copy2 = nums[:]
>>> nums_copy2
[3, 1, 9, 6, 8, 3, 5, 3]
(5)列表的运算符
列表的加法,其实也是拼接,所以要求加号(+)两边都应该是列表,举个例子:
- >>> s = [1, 2, 3]
- >>> t = [4, 5, 6]
- >>> s + t
- [1, 2, 3, 4, 5, 6]
- 列表的乘法,则是重复列表内部的所有元素若干次:
- >>> s * 3
- [1, 2, 3, 1, 2, 3, 1, 2, 3]
(6)列表的嵌套
- >>> matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
复制代码
可以把创建二维列表的语句这么写:
- >>> matrix = [[1, 2, 3],
- [4, 5, 6],
- [7, 8, 9]]
- 访问matrix[1][1]=5
(7)列表推导式的基本语法如下:
[expression for target in iterable]
>>> matrix = [[1, 2, 3],
... [4, 5, 6],
... [7, 8, 9]]
>>> col2 = [row[1] for row in matrix] # 提取列表第二列的数据
>>> col2
[2, 5, 8]
又比如,下面代码是获取矩阵主对角线上的元素(就是从左上角到右下角这条对角线上的元素):
>>> diag = [matrix[i][i] for i in range(len(matrix))]
>>> diag
[1, 5, 9]
利用列表推导式,就可以很轻松地创建一个二维列表:
- >>> S = [[0] * 3 for i in range(3)]