2020年6月17日——Python

1.递归的特点

(1)“先纵后横”,比如在遍历一个表格时,先纵向进行遍历,当遍历到一个点时,以该点为起点,进行横向遍历

(2)要有进口,即要定义起始点

(3)要有出口,即递归函数中要有结束条件

(4)当数据过多时,可以使用动态递归、状态法等

2.全排列

(1)在C++中,全排列结构为:

    do{
      ...

    }while(next_permutation(s.begin() , s.end()));

  其中,next_permutation(start,end):求当前排列的下一个排列

  拓展:在C++中,**_find():在一个字符串中查找一个指定的单个字符或字符数组,如果找到,就返回首次匹配的开始位置;如果没有查找到匹配的内容,就返回String::npos

(2)在Python中,全排列使用的是itertools中的:combinations和permutations:

    >>>import itertools

    >>>s="abc"

    >>>itertools.combinations(s,len(s))

    [('a','b','c')]

    >>>itertools.permutations(s,len(s))

    [('a','b','c'),('a','c','b'),('b','a','c'),('b','c','a'),('c','a','b'),('c','b','a')]

(3)循环排列,也叫圆排列、环排列等。指从n个不同元素中取出m(1<=m<=n)个不同的元素排列成一个环形,既无头也无尾。两个循环排列相同,当且仅当所取元素的个数相同,并且元素取法一致,在环上的排列顺序一致。

  e.g.  从m个元素里选出n个元素的循环排列,设它的全排列种数为x:

      因为n个元素的循环全排列的种数为(n-1)!

      所以

 

 

   其中:

    

 

    

 

3.Python中的字典,可以用元组tuple作为键(即Key),但是列表不行

4.字典的取值推荐使用get()直接取

  e.g.  >>>a={1:2}

     >>>a.get(1)

    2

     >>>a.get(2) #不存在时,返回None

     None

     >>>a.get(2,3) #此时,若键(即Key)为2不存在或者是为空的时候,则输出3

     3

5.若将一个数据规模很大的数据,进行时间性能上的优化,只有两种办法:

(1)使用折半查找

(2)转换为指数,使用快速幂

6.在程序中,计算分类的性能,使用的是“+”;计算分步的性能,使用的是“*”

 

1 for i in range(10):#分类,时间性能为10( 即O(n))
2     print(i)
3 
4 for i in range(10):
5     for j in range(10):#分步,时间的性能为100( 即O(n*n))
6         print(i)

 

7.tuple(1,2)是不可以生成元组的,(1,2)是可以生成元组的

8.  0  and  1  =  0

     非 0 数  and  1  =  1

  任何字符  and  1  =  1 ( '0' and 1=1)

  ''  and  1  =  '' (''为空字符串)

9.  矩阵的相乘,为三重循环(矩阵都是i行j列的情况下)

 

 代码为:

 1 '''
 2 两个都是i行j列的矩阵进行相乘,得出来的矩阵,也是i行j列
 3 '''
 4 class MultipleMatrix:
 5     def multipleMatrix(self,A,B):
 6         result=[] #结果矩阵
 7         for i in range(len(A)):#对结果矩阵进行初始化,全部初始化为0
 8             a=[]
 9             for j in range(len(A[0])):
10                 b=0
11                 for k in range(len(A[0])):
12                     b+=A[i][k]*B[k][j]
13                 a.append(b)
14             result.append(a)
15         return result
16 
17 if __name__=="__main__":
18     matrixA=[[1,2,3],[4,5,6],[7,8,9]]
19     matrixB=[[1,1,1],[1,1,1],[1,1,1]]
20     r=MultipleMatrix().multipleMatrix(matrixA,matrixB)
21     for i in r:
22         print(i)

运行结果为:

 

posted @ 2020-06-17 01:06  Tinero  阅读(166)  评论(0编辑  收藏  举报