簡單的嘗試可能的替代以前的解答了
lst = ['http://xxx/abc%s/image%s.png'%(x,y) for x, y in [(j,i) for i in (9,10,11) for j in ('x', 'y', 'z')]]
略range
和format
功能可以提高性能。
分析 - 我比我的方式和張貼Jkdc
的路上我跑了兩路100000次但意思表示itertools方法是更快執行方面耗時
from itertools import product
import time
from matplotlib import pyplot as plt
import numpy as np
prodct = []
native = []
def test():
start = time.clock()
lst = ['http://xxx/abc{}/image{}'.format(x, y) for x, y in product(('x', 'y', 'z'), range(9, 11))]
end = time.clock()
print '{0:.50f}'.format(end-start)
prodct.append('{0:.50f}'.format(end-start))
start1 = time.clock()
lst = ['http://xxx/abc%s/image%s'%(x,y) for x, y in [(j,i) for i in (9,10,11) for j in ('x', 'y', 'z')]]
end1 = time.clock()
print '{0:.50f}'.format(end1-start1)
native.append('{0:.50f}'.format(end1-start1))
for i in range(1,100000):
test()
y = np.dot(np.array(native).astype(np.float),100000)
x= np.dot(np.array(prodct).astype(np.float),100000)
print np.mean(y)
print np.mean(x)
並獲得結果native
(無模塊)和itertools-product
如下
原生2.1831179834
爲itertools產品1.60410432562
添加更多的細節,你爲什麼要這些,你嘗試過什麼到目前爲止..它可以幫助我們找到更好更快的解決方案 – SIslam
你可以在這裏使用循環 – The6thSense
你的正則表達式是無效的,因爲'[9-11]'不是一個有效的字符類。我們需要更多關於您實際上想要實現的目標,以便能夠幫助您。 –