我有RGB
的这3个顶点(结束值)分别为#ff0000
、#ffcfcf
和{R
从35
到{G
从{
import re
my_list=[]
for i in xrange(53,256):
for j in xrange(0,208):
for k in xrange(0,208):
item = str(hex(i))+str(hex(j))+str(hex(k))
item2 = re.sub('(0x)','',item)
my_list.append(item2)
我迭代整数值并将它们转换成十六进制,然后连接RGB
值,并从连接的字符串中替换0x
(这不起作用)。这种方法很慢。有更好的方法吗?在
作为基准,我在我的电脑上运行了你的代码。它需要27.8秒
正则表达式总是很昂贵,所以让我们用简单的字符串替换来替换它们:
这需要8.8秒
但是,所有这些都采用十六进制数字的字符串表示并删除前面的
^{pr2}$0x
,对我来说似乎有点不太对劲,尤其是Python为此内置了字符串格式:这需要8.3秒。稍微好一点,但看起来也更干净一点。如果我们使用^{} ,我们甚至可以将其写成一行代码(sans long linebreak and import语句):
这需要8.1秒。还没有。在
现在,字符串格式化是最耗费时间的操作。这也是一个我们可以很容易避免的操作(因为我们只格式化相同的256个值)。让我们创建一个查找表:
运行时间:1.6秒。希望足够快。在
相关问题 更多 >
编程相关推荐