如何迭代中间的列表

时间:2016-03-19 07:35:14

标签: python algorithm math

我想用-s ... s中的元素遍历所有长度为n的列表/元组。目前我这样做:

for k in itertools.product(range(-s,s+1), repeat = n):
    #process k and maybe print out the result

但是这对我没用,因为有大量的这样的元组,我的代码可能永远不会终止。我想首先从最有趣的开始。在这种情况下,迭代的顺序是:

  1. 所有仅包含0的元组(只有一个)
  2. 所有仅包含0,1和-1的元组,不包括我们已经看到的那些元组。
  3. 所有仅包含0,1,-1,2和-2的元组,不包括我们已经看过的那些元组。
  4. 依旧......
  5. 怎么能这样做?

2 个答案:

答案 0 :(得分:3)

这个怎么样:

<div class="p">

答案 1 :(得分:1)

所以你的代码要比列表更昂贵吗?

然后,您可以使用key参数对这些列表的列表进行排序。你称之为列表的东西确实是元组,对吧?至少在我的python 2.7 itertools中。我会将它们转换为数组,因为我认为你不能使用abs。然后排序功能是:

lists.sort(key = lambda t: np.max(np.abs(np.array(t))))

这项工作能够做得足够快吗?