假设我有一个元组列表http://example.com
HTTP/1.1 401 UNAUTHORIZED
Please provide proper credentials.
http://example.com?username=admin&password=secret
,我想删除所有反转元组的实例,例如从上面的列表中删除[(0, 1, 2, 3), (4, 5, 6, 7), (3, 2, 1, 0)]
。
我目前的(基本)方法是:
(3, 2, 1, 0)
随着x的增加,所用时间呈指数增长。所以,如果x很大,这需要很长时间!我怎样才能加快速度呢?
答案 0 :(得分:2)
使用set
时会想到:
L = set()
for ll in itertools.permutations(np.arange(x), 4):
if ll[::-1] not in L:
L.add(ll)
甚至,性能稍好一点:
L = set()
for ll in itertools.permutations(np.arange(x), 4):
if ll not in L:
L.add(ll[::-1])
答案 1 :(得分:0)
需要保留第一个看起来像是强制你使用contitional进行迭代。
a = [(0, 1, 2, 3), (4, 5, 6, 7), (3, 2, 1, 0)]
s = set(); a1 = []
for t in a:
if t not in s:
a1.append(t)
s.add(t[::-1])
编辑:接受的答案解决了示例代码(即itertools置换样本)。这回答了任何列表(或可迭代)的广义问题。