2010年12月14日 星期二

Python寫排列組合

排列組合以離散數學來看應該是如下列表示
x+y for all x for all y
x = {1,2,3}
y = {a,b,c}
排列出來的集合為:{1a,1b,1c,2a,2b,2c,3a,3b,3c}

用Python要怎麼解決呢?
很簡單,幾乎就跟上面的表示法一樣
z = [a+b for a in x for b in y]
print z 就會看到上面的集合了

有時候離散也會在後面表示條件式如
x+y for all x for all y, if x > 1

那就一樣在Python改成
z = [a+b for a in x for b in y if x > 1]
就好了


由此看來創Python的離散應該很強...

沒有留言:

張貼留言