2016-08-07 9 views
1

とループの(再帰的)リンクの交換:は私が持っている場合は、より機能的なアプローチ

for a in range(100): 
    for b in range(50): 
     my_func(a, b) 

は、私がそのコードを置き換えることができます。

from itertools import product 
product(*[range(100), range(50)]) 

しかし、私は以下の持って言う:

for i in range(100): 
    for j in range(i): 
     my_func(i, j) 

どうすれば同様の置き換えを行うことができますか(これが可能であるとします)?

+0

「product(range(100)、range(50))」の代わりに 'product(* [range(100)、range(50)])を使用するのはなぜですか? – cdlane

+0

@cdlaneそれも動作します。しかし、私は他の関数の中に 'product'引数を渡す傾向があります。したがって、このアプローチはあまり制限的ではありません。 – lnNoam

答えて

2

itertoolsでどうすればよいか分かりませんが、リストの理解やジェネレータの表現では十分ではありませんか?

gen = ((i, j) for i in range(100) for j in range(i)) 

for i, j in gen: 
    my_func(i, j) 
関連する問題