random获取随机数
import random 导入random这个模块
random.randint(1, 10) 获取1到10的随机数。
x = random.getstate 这个函数来获取随机数种子加工之后随机数生成器的内部状态
random.setstate(x)
decimal decimal是十进制的意思
import decimal 引用decimal模块
decimal.Decimal 使用decimal的Decimal来实例化一个对象
a = decimal.Decimal('0.1')
b = decimal.Decimal('0.2')
print(a + b)
0.3 不然a + b等于0.30000...0004
Python 中任何对象都能直接进行真值测试(测试该对象的布尔值为True或False),用if或者while语句的条件判断,也可以做为布尔逻辑运算符的操作数。
短路逻辑的核心思想:从左往右,只有当第一个操作数的值无法确定逻辑运算的结果时,才对第二个操作数进行求值。
流程图是一种用表示算法或代码流程的框图组合,它以不同类型的框框代表不同种类的程序步骤,每两个步骤之间以箭头连接起来。
函数:就是对一段代码进行封装。
for 变量 in 可迭代对象:
摄氏度转华氏度 f=c*1.8+32
for each in "FishC" 打印得F i s h C 迭代 range()与for出生入死的好兄弟,range()就是帮你生成一个数字序列。有下面三种用法,无论使用哪一种它的参数都只能是整型。
range(stop) range(start,stop) range(start,stop,step) step为指定跨度
列: for i in range(11) for i in range(5,10) for i in range(5,10,2)
输出:0 1 2 3 4 5 6 7 8 9 10 5 6 7 8 9 5 7 9
1加到100
sum = 0
for i in range(101):
sum += i
print(sum)
找出10以内的所有素数
for n in range(2,10):
for x in range(2,n):
if n % x == 0:
print(n, "=", x, "*", n // x)
break
else:
print(n, "是一个素数")
列表
rhyme = [1, 2, 3, 4, 5, '你好']
for each in rhyme:
print(each)
列表切片
rhyme[0:3]
[1, 2, 3]
rhyme[3:6]
[4, 5, '你好']
rhyme[:3]
[1, 2, 3]
rhyme[3:]
[4, 5, '你好']
rhyme[:]
[1, 2, 3, 4, 5, '你好']
rhyme[0:6:2] 2代表跨度值
[1, 3, 5]
rhyme[::-1]
['你好', 5, 4, 3, 2, 1] 倒序输出
heros = ["小明","小强"]
heros.append("小红") append()只能每次添加一个
heros
['小明', '小强', '小红']
heros.extend(["小米","小艾","小白"]) extend()方法的参数必须是一个可迭代对象
heros 新的内容是追加到原列表最后一个元素的后面
['小明', '小强', '小红', '小米', '小艾', '小白']
采用切片的方法
s = [1, 2, 3, 4, 5]
s[len(s):] = [7, 8, 9] 此做法等同于s.extend([7,8,9])
s
[1, 2, 3, 4, 5, 7, 8, 9]
(1)insert插
s = [1, 3, 4, 5]
s.insert(1, 2) insert()插入,1代表插入的下标,2是插入的值
s
[1, 2, 3, 4, 5]
(2)remove删
heros.remove("小红") remove()删除,1,如果列表中存在多个匹配的元素,那么它只会删除第一个
heros 2,如果指定的元素不存在,那么程序就会报错
['小明', '小强', '小米', '小艾', '小白']
(3)pop()删
heros.pop(2) pop()删除,2代表要删除的值的下标
'小米'
heros
['小明', '小强', '小艾', '小白']
(4)clear()清空
heros.clear()
heros
[]
(5)sort()排序(从小到大)
nums = [3, 1, 9, 6, 2, 3, 5]
nums.sort()
nums
[1, 2, 3, 3, 5, 6, 9]
(6)reverse()排序(从大到小)
nums.reverse()
nums
[9, 6, 5, 3, 3, 2, 1]
(7)count()查
nums
[9, 6, 5, 3, 3, 2, 1]
nums.count(3) count()查找3的个数
2
(8)index()查找要查的下标
heros
['小明', '小强', '小红', '小米', '小艾', '小白']
heros.index("小米") index(x,start,end)start指的是查找的开始,end指的是结束的位置
3
(9)copy()拷贝
nums1 = nums.copy()
nums1
[9, 6, 5, 3, 3, 2, 1]
采用切片的方法:
nums2 = nums[:]
nums2
[9, 6, 5, 3, 3, 2, 1] 这两种都称为浅拷贝
嵌套列表
列表中有列表,称为嵌套列表。也被称为二维表。
matrix = [[1, 2, 3],[4, 5, 6],[7, 8, 9]]
matrix = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
matrix
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
访问嵌套列表
for i in matrix:
for each in i:
print(each, end=" ")
print()
1 2 3
4 5 6
7 8 9
is运算符
is运算符也成为同一性运算符,它是用于检验两个变量是否指向同一个对象的一个运算符
浅拷贝和深拷贝
浅拷贝见上,
深拷贝:
import copy 首先引用copy模块
matrix
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
matriy = copy.deepcopy(matrix)
matrix[1][1] = 0
matrix
[[1, 2, 3], [4, 0, 6], [7, 8, 9]]
matriy
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
列表推导式
列:
(1):
oho = [1, 2, 3, 4, 5]
oho = [i * 2 for i in oho]
oho
[2, 4, 6, 8, 10]
(2):
code = [ord(c) for c in "FishC"] ord()这个内置函数的作用就是将单个字符串转换为对应的编码
code
[70, 105, 115, 104, 67]
(3):
matrix = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
col2 = [row[1] for row in matrix]
col2
[2, 5, 8]
(4):
diag = [matrix[i][i] for i in range(len(matrix))]
diag
[1, 5, 9]
even = [i for i in range(10) if i % 2 == 0] for的执行顺序,(1)for i in range(10)
even (2)if i % 2 == 0
[0, 2, 4, 6, 8] (3)i
降维,二维表降到一维表,如下:
matrix = [[1, 2, 3],[4, 5, 6],[7, 8, 9]]
flatten = [col for row in matrix for col in row]
flatten
[1, 2, 3, 4, 5, 6, 7, 8, 9]
列表推导式的嵌套
[[x, y] for x in range(10) if x % 2 ==0 for y in range(10) if y % 3 == 0]
[[0, 0], [0, 3], [0, 6], [0, 9], [2, 0], [2, 3], [2, 6], [2, 9], [4, 0], [4, 3], [4, 6], [4, 9], [6, 0], [6, 3], [6, 6], [6, 9], [8, 0], [8, 3], [8, 6], [8, 9]]