モジュールの読み込み
>>> import itertools >>> app_lists = ['app1', 'app2,app3'] >>> app_lists = [app for app in itertools.chain.from_iterable(app.split(',') for app in app_lists)] >>> print app_lists ['app1', 'app2', 'app3'] >>> type(app.split(',') for app in app_lists) <type 'generator'>
itertools.chain.from_iterableに関して
ここを参考にしました。あまり見かけることのない構文ですが、以下の関数と同じ働きをします。
@classmethod def from_iterable(iterables): # chain.from_iterable(['ABC', 'DEF']) --> A B C D E F for it in iterables: for element in it: yield element
引数としてイテレータを生成するジェネレータを、ジェネレータ式から生成して用いています。ジェネレータに関してはここを参照してください。
>>> from ryu import utils >>> import inspect >>> from ryu.base.app_manager import RyuApp >>> name = 'ryu.app.rest.py' >>> mod = utils.import_module(name) >>> print mod <module 'ryu.app.rest' from '/Library/Python/2.7/site-packages/ryu/app/rest.pyc'> >>> clses = inspect.getmembers(mod, lambda cls: (inspect.isclass(cls) and ... issubclass(cls, RyuApp))) >>> print clses [('RestAPI', <class 'ryu.app.rest.RestAPI'>)] >>> type(clses) <type 'list'> >>> clses[0] ('RestAPI', <class 'ryu.app.rest.RestAPI'>) >>> type(clses[0]) <type 'tuple'> >>> type(clses[0][1]) <type 'type'> >>> clses[0][1] <class 'ryu.app.rest.RestAPI'> >>> clses[0][0] 'RestAPI'