2011-07-19 8 views
5

このPythonコードを改善できますか?このPythonスクリプトを改善できますか?

def build_list(types): 
     for x in types: 
      for a in ['short', 'long', 'average']: 
       for b in ['square', 'sloped', 'average']: 
        for c in ['small', 'large', 'average']: 
         for d in ['thin', 'thick', 'average']: 
          for e in ['high', 'low', 'average']: 
           for f in [True, False]: 
            for g in [True, False]: 
             for h in ['flat', 'thick', 'average']: 
              for i in ['long', 'short', 'average']: 
               for j in [True, False]: 
                for k in ['thin', 'thick', 'average']: 
                 for l in ['thin', 'thick', 'average']: 
                  yield [x, a, b, c, d, e, f, g, h, i, j, k, l] 
    facets_list = list(build_list(xrange(1,121))) 
    print len(facets_list) 
+6

私がそれを見たら、目が膨らんで、私は自分自身に "はい!"と思った。 –

答えて

12

はい。 itertools.product()

import itertools 
facets_list = list(itertools.product(types, 
            ['short', 'long', 'average'], 
            ['square', 'sloped', 'average'], 
            ['small', 'large', 'average'], 
            ...)) 
+0

そして 'list'sの代わりに' tuple'sを使います(元のバージョンは約12%速くなります)。 –

+0

ありがとうgnibbler !! – lxneng

+0

この解決策は、元のバージョンの約2倍の速さで終了し、 'list'sの代わりに' tuple'sを使用すると、それは1-2%速くなります(元のものよりもはるかに少ない)。 –

関連する問題