代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Python
】
生成四位不重复数字(0-9)的所有组合
作者:
Duncan
/ 发布于
2014/11/18
/
921
#coding=cp936 #关于这个问题的精彩讨论参见这里 # <a href="http://groups.google.com/group/python-cn/browse_thread/thread/4d9eda8e422a6cf8">http://groups.google.com/group/python-cn/browse_thread/thread/4d9eda8e422a6cf8 #在我的电脑上 #init_set 1000 times 5.529 #init_set2 1000 times 4.674 #init_set3 1000 times 3.287 #init_set4 1000 times 18.271 #init_set5 1000 times 2.069 def init_set8(r10=range(10)): """ 把循环内的range函数提到外面 times5.486 ==> 4.427 """ ret = [] for i in r10: for j in r10: for k in r10: for l in r10: if i != j and i != k and i != l and j != k and j != l and k != l: ret.append((i, j, k, l)) return ret timing(init_set8, 1000) def init_set9(r10=range(10)): """ for 循环改成列表推导 times5.486 ==>3.773 """ return [(i, j, k, l) for i in r10 for j in r10 for k in r10 for l in r10 if ( i != j and i != k and i != l and j != k and j != l and k != l) ] timing(init_set9, 1000) def init_set10(r10=range(10)): """ return 一个 generator init_set10 1000 times 0.004 这个无疑是最快的 :P 我最喜欢这个解决方案,空间换时间的算法 对这个问题属于 过度优化 """ return ((i, j, k, l) for i in r10 for j in r10 for k in r10 for l in r10 if( i != j and i != k and i != l and j != k and j != l and k != l) ) timing(init_set10, 1000) def init_set11(): """ 用代码的空间代价换取计算P4_4的时间 init_set11 1000 times 7.268 OMG reduce(lambda x,y:x+y,l)太慢了 """ c10_4=[( i, j, k, l ) for i in xrange(0, 10) for j in xrange(i+1, 10) for k in xrange(j+1, 10) for l in xrange(k+1, 10) ] ret=reduce(lambda x,y:x+y, [ [ (i, j, k, l), (i, j, l, k), (i, k, j, l), (i, k, l, j), (i, l, j, k), (i, l, k, j), (j, i, k, l), (j, i, l, k), (j, k, i, l), (j, k, l, i), (j, l, i, k), (j, l, k, i), (k, i, j, l), (k, i, l, j), (k, j, i, l), (k, j, l, i), (k, l, i, j), (k, l, j, i), (l, i, j, k), (l, i, k, j), (l, j, i, k), (l, j, k, i), (l, k, i, j), (l, k, j, i),] for i, j, k, l in c10_4 ], ) return ret def init_set12(): """ generator是伟大的发明,数据流编程万岁 init_set12 1000 times 1.758 """ c10_4=(( i, j, k, l ) for i in xrange(0, 10) for j in xrange(i+1, 10) for k in xrange(j+1, 10) for l in xrange(k+1, 10) ) from itertools import chain ret=chain( *( ( (i, j, k, l), (i, j, l, k), (i, k, j, l), (i, k, l, j), (i, l, j, k), (i, l, k, j), (j, i, k, l), (j, i, l, k), (j, k, i, l), (j, k, l, i), (j, l, i, k), (j, l, k, i), (k, i, j, l), (k, i, l, j), (k, j, i, l), (k, j, l, i), (k, l, i, j), (k, l, j, i), (l, i, j, k), (l, i, k, j), (l, j, i, k), (l, j, k, i), (l, k, i, j), (l, k, j, i),) for i, j, k, l in c10_4 ) ) return list(ret) timing(init_set12, 1000)
试试其它关键字
不重复数字
同语言下
.
比较两个图片的相似度
.
过urllib2获取带有中文参数的url内容
.
不下载获取远程图片的宽度和高度及文件大小
.
通过qrcode库生成二维码
.
通过httplib发送GET和POST请求
.
Django下解决小文件下载
.
遍历windows的所有窗口并输出窗口标题
.
根据窗口标题调用窗口
.
python 抓取搜狗指定公众号
.
pandas读取指定列
可能有用的
.
实现测量程序运行时间及cpu使用时间
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
Duncan
贡献的其它代码
(
49
)
.
设置HTTP 下载图片
.
计算一个目录的大小
.
浮云效果
.
随机生成信用卡卡号
.
重命名数据库
.
通过文件流读取一个已存在的文件
.
CLI 把16进制字符串转换成数字存到数组
.
显示中文日期
.
在标题栏上显示当前日期
.
创建一个返回上一页的按钮
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3