2010年12月20日 星期一

Python集合

Python有個數學常用的型態 集合(set)

a = set([1,2,3,4,5])
b = set([2,4])

b.issubset(a) 會回傳True

也可以這樣用
a = set(['apple','google','microsoft'])
b = set(['apple','object C'])

b.issubset(a) 會回傳 False
b = set(['apple','google'])
b.issubset(a) 會回傳True

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的離散應該很強...