開発環境
- OS X Mavericks - Apple(OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- Python (プログラミング言語)
Learning Python (Mark Lutz (著)、Oreilly & Associates Inc)のPART Ⅵ.(Classes and OOP)、CHAPTER 32(Advanced Class Topics)、Test Your Knowledge: Part VI Exercises 5.(Set objects)を解いてみる。
その他参考書籍
5.(Set objects)
コード(BBEdit)
sample.py
#!/usr/bin/env python3 #-*- coding: utf-8 -*- from setwrapper import Set # a. s1 = Set([1,2,3,4,5]) s2 = Set([1,3,5,7,9,11]) print(s1 & s2) print(s1 | s2) # b. 呼び出されるメソッドは__getitem__ s = Set('python') print(s[2]) print(s.__getitem__(2)) # c iterメソッドが呼び出される for x in s: print(x) # d. print(s.intersect('scheme')) print(s.union('scheme')) # e. class SubSet(Set): def intersect(self, *others): res = [] for x in self: for other in others: if not x in other: break res.append(x) return Set(res) def union(*others): res = [] for other in others: for x in other: if not x in res: res.append(x) return Set(res) s1 = SubSet([1, 2, 3, 4, 5]) s2 = SubSet([2, 4]) s3 = SubSet([1, 3, 5]) print(s1.intersect(s2, s3)) print(s1.union(s2, s3)) print(s1.intersect(s2) & s2.intersect(s3)) print(s1.union(s2) | s2.union(s3)) # f. class SubSet1(Set): def __getattr__(self, name): return getattr(self.data, name) def __add__(self, other): if isinstance(other, Set): other = other.data return Set(self.data + other) s1 = SubSet1('python') s2 = SubSet1('scheme') print(s1.pop()) print(s1 + s2)
入出力結果(Terminal)
$ ./sample.py Set:[1, 3, 5] Set:[1, 2, 3, 4, 5, 7, 9, 11] t t p y t h o n Set:['h'] Set:['p', 'y', 't', 'h', 'o', 'n', 's', 'c', 'e', 'm'] Set:[2, 4] Set:[1, 2, 3, 4, 5] Set:[] Set:[1, 2, 3, 4, 5] n Set:['p', 'y', 't', 'h', 'o', 's', 'c', 'e', 'm'] $
0 コメント:
コメントを投稿