Pythono 实现 Permutation
成都创新互联公司是一家专注于成都做网站、成都网站建设、成都外贸网站建设与策划设计,饶河网站建设哪家好?成都创新互联公司做网站,专注于网站建设10余年,网设计领域的专业建站公司;建站业务涵盖:饶河等地区。饶河做网站价格咨询:028-86922220
不管在R 还是python中,都有现成的函数来轻而易举地进行全排列(Permutation)、无序排列等等。今天想要尝试一下使用自己写代码来实现全排列。
首先,我采用的算法如下:
对于一个数列 i.e. 1,2,3,4 想要进行全排列:
在第一个位置可以放入1 ,2,3,4
如果第一个位置为1, 第二个位置则 只能放 2,3,4 ...
如果第一、二个位置为1,2, 第三个位置只能放3 or 4
大致思路:
第一次:[[1],[2],[3],[4]]
第二次:[[[1],[2]],[[1],[3]],[[1],[4]],...]
第三次:[[[1],[2],[3]],[[1],[2],[4]],[[1],[3],[2]],...]
第四次:[[[1],[2],[3],[4]],[[1],[2],[4],[3]],...]
在这样的思想下,写出如下代码:
1 n = 5
2 List = [[1],[2],[3],[4],[5]] #数据结构非常重要,如果是[1,2,3,4,5]则很难work!
3 Grow_List = List
4 Count = 1
5 while Count = (n-1):
6 Output_List = [] #每一次循环完毕将Output_List归零,这个非常重要。否则会导致Output_List仍包含之前内容
7 for i in Grow_List:
8 Temp = List[:] #浅拷贝非常重要!如果不是浅拷贝,将导致List的改变
9 print "i:",i
10 if len(i) == 1: #发现在i为一个元素和多个元素的时候,需要做的事情不同,
11 Temp.remove(i) #将已有元素移除掉,便于进行排列组合
12 elif len(i) =2:
13 for j in i:
14 Temp.remove(j)
15 for k in Temp:
16 if len(i) == 1: #i为一个元素和多个元素的时候,所需操作略有不同
17 t = [i[:]]
18 elif len(i) =2:
19 t = i[:]
20 t.append(k) #先对元素进行添加,再添加到Output_List当中
21 print "t:",t
22 Output_List.append(t)
23 Grow_List = Output_List
24 Count += 1
在一个文件里写0
隔一段时间比如60s判断下时间,如果日有变化
则读取文件并赋值给这个变量
round函数python:
这个函数相当于调去里面的一个函数,有一个数组,从中里面调取一个数据。简单的说,round是使用四舍五入对小数进行位数控制的函数,round(a,b),a参数是小数,b是小数点后保留的位数。实际使用需要考虑的python2和python3版本的差异与小数精度的问题。
ound函数的使用用法
根据Excel的帮助得知,round函数就是返回一个数值,该数值是按照指定的小数位数进行四舍五入运算的结果。
round函数的语法是:ROUND(number,num_digits),即:Round(数值,保留的小数位数)
Number:需要进行四舍五入的数字。
Num_digits:指定的位数,按此位数进行四舍五入。
其中,如果num_digits大于0,则四舍五入到指定的小数位。
如果num_digits等于0,则四舍五入到最接近的整数。
如果num_digits小于0,则在小数点左侧进行四舍五入。
python中len()的用法:
新建一个len()函数的使用py,中文编码声明注释:#coding=gbk,函数:len()作用:返回字符串、列表、字典、元组等长度。语法:len(str)。参数:str:要计算的字符串、列表、字典、元组等。返回值:字符串、列表、字典、元组等元素的长度。
实例:
1、计算字符串的长度。
2、计算列表的元素个数。
3、计算字典的总长度,即键值对总数。
4、计算元组元素个数。
在Python中,要知道一个字符串有多少个字符,以获得字符串的长度,或者一个字符串需要多少字节,可以使用len函数。
描述
round() 方法返回浮点数x的四舍五入值。
语法
以下是 round() 方法的语法:
round( x [, n] )
参数
x -- 数值表达式。
n -- 数值表达式。
返回值
返回浮点数x的四舍五入值。
实例
以下展示了使用 round() 方法的实例:
#!/usr/bin/python
print "round(80.23456, 2) : ", round(80.23456, 2)
print "round(100.000056, 3) : ", round(100.000056, 3)
print "round(-100.000056, 3) : ", round(-100.000056, 3)
以上实例运行后输出结果为:
round(80.23456, 2) : 80.23
round(100.000056, 3) : 100.0
round(-100.000056, 3) : -100.0