sample = "私は<アイスクリーム|アイスキャンデー|アイス>が好き(なの)です。"

とします。

  1. <>に囲まれた部分は、どれでもいいが、線で区切られた単語のうち、この中のどれか一つは書かれていなければならないとします。
  2. ()に囲まれた文字は、あってもなくても構わないとします。

このとき、1と2を満たす組み合わせとなる文を作りたいと思っています。
まず、どれか3つのうちで3通り。()はあるかないかで2通り。
計6通りの文章が出来上がると思います。
この6通りを瞬時に算出するプログラムを書きたいのですが、
どうすればいいでしょうか。なんなら、<>などは別の記号に置き換えても
もちろん問題ありません。
  
 環境: python3.6