LoginSignup
11
14

More than 5 years have passed since last update.

リストだけじゃない内包表記

Last updated at Posted at 2014-06-05

勉強資料でリスト内包表記が出てくることで内包表記はリストにしかつかえないと思い込んでいたのですが 色んな所につかえるとわかったのでまとめた
英語だと list comprehension なので他にもつかえる感じする

~ %python3
Python 3.4.0 (v3.4.0:04f714765c13, Mar 15 2014, 23:02:41) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from itertools import tee
>>> Generator = (i for i in range(10))  #ジェネレーター内包表記
>>> g = tee(Generator, 5)  #ジェネレーターを5つに
>>> Str = "comprehension"
>>> List = [g[0]]  #リスト内包表記
>>> Tuple = tuple(g[1])  #タプル内包表記
>>> Dict = {k:v for (k,v) in zip(Str, g[2])}  #辞書内包表記 dict(zip(Str, g[2])) でも同じ
>>> Set = set(s for s in Str)  #セット内包表記 set(Str) でも同じ
>>> g
(<itertools._tee object at 0x102a6ab08>, <itertools._tee object at 0x102a6aac8>, <itertools._tee object at 0x102a6ab48>, <itertools._tee object at 0x102a6ab88>, <itertools._tee object at 0x102a6af08>)
>>> List
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> Tuple
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
>>> Dict
{'c': 0, 'p': 3, 'm': 2, 'h': 6, 'r': 4, 'e': 7, 'o': 1, 'n': 8, 's': 9}
>>> Set
{'p', 's', 'e', 'c', 'h', 'm', 'r', 'o', 'n', 'i'}
>>> sum(g[3])  #総和
45
>>> g[4]
<itertools._tee object at 0x102a6ab88>
>>> while g[4]:
...     next(g[4])
... 
0
1
2
3
4
5
6
7
8
9
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
StopIteration
11
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
14