【发布时间】:2015-04-19 18:11:28
【问题描述】:
我有一个包含 18 000 个唯一 ID 的列表。
ID 是字母A, B, C, D 的串联。
我制作了一个代码,将 ID 按ID[0:-1] 分组并给出重复 ID 的索引位置。
这很好用,但要继续很长时间:在 110 secs 附近,对于 18 000 ID。
你有想法加速我的代码吗?
a = ['1CDABCABDA', '1CDABCABDB', '1CDABCABDD', '1BCABCCCAA', '1DDAABBBBA', '1BCABCCCAD']
startTime = time.time()
b = [i[0:-1] for i in a]
b = list(set(b))
result = range(len(b))
it = 0
for i in result:
result[i] = [b[i], []]
for j in xrange(len(a)):
if b[i] == a[j][0:-1]:
result[i][1].append(j)
endTime = time.time()
print endTime - startTime, 'secs !'
输出:
>>> [['1CDABCABD', [0, 1, 2]], ['1DDAABBBB', [4]], ['1BCABCCCA', [3, 5]]]
【问题讨论】:
-
你能显示你的代码的输出吗?
-
>>> [['1CDABCABD', [0, 1, 2]], ['1DDAABBBB', [4]], ['1BCABCCCA', [3, 5]]]跨度>
-
你需要解释更多关于你的代码和输出,例如
['1DDAABBBB', [4]]中的4是什么? -
是a中的索引位置
标签: python performance list optimization duplicates