«

»

1月 20

初めてのPython(第二版)を読んだ(3)

今回も同じネタです。書見台届きました。

IBMロゴストア(委託)でT H I N Kと書かれた楯と表紙が革風加工にTHINKの文字が書かれている携帯メモ帳を2冊買いました。今日届きました。これがThinkPadの命名の由来となったそうで、とても欲しかったのですが当時は高額の転売しか見当たらず買えませんでした。550円(それぞれ替えノート2冊付き)です。IBM! 送料が650円するのはいただけませんが…..w あんまり有名じゃないみたいですが、すごく面白いものをいろいろ扱ってます。(IBM公式の「THINK」についての解説ページの端っこにひっそりとあったw)

あ、あと「ThinkPadはこうして生まれた」も先日購入しました。あと百合姫3月号発売しました。かなり前から予約してたのに発売翌日に届くとか…..w

forで複数の引数(って言えばいいのかな?)を指定する

>>> for (a,b) in T:
... print a
... print b
...
1
2
5
8
>>> for (a,b) in T:
... print a,
... print b
...
1 2
5 8

循環オブジェクト

>>> T
[(1, 2), (5, 8)]
>>> T.append(T)
>>> T
[(1, 2), (5, 8), [...]]
>>> for (a,b) in T:
... print a,
... print b
...
1 2
5 8
Traceback (most recent call last):
File "", line 1, in
ValueError: too many values to unpack

えっ

>>> print T[10]
Traceback (most recent call last):
File "", line 1, in
IndexError: list index out of range
>>> print T[0]
(1, 2)
>>> print T[1]
(5, 8)
>>> print T[2]
[(1, 2), (5, 8), [...]]

使いどころが分からんw

apply()は使う気がしないので、一応試しては見ましたが飛ばします。

map()

>>> list1 = (1,2,3)
>>> func2 = lambda x:x*10
>>> map(func2,list2)
[20, 30]
>>> map(func2,list1)
[10, 20, 30]

これは便利。シーケンスの個々にに指定した関数を適用してくれる。

filter()

>>> func2 = lambda x:x==5
>>> list2 = [3,6,5]
>>> filter(func2,list2)
[5]

関数がTrueを返したら、それをリストに追加して返す。

なぜかこのコードでエラー吹く。。原因不明。

>>> func2 = lambda x,y:x==y
>>> list2 = [(1,5),(2,7),(3,3)]
>>> filter(func2,list2)
Traceback (most recent call last):
File "", line 1, in
TypeError: () takes exactly 2 arguments (1 given)

reduce()

>>> func3 = lambda x,y:x+y
>>> list2 = [1,5,2,7,3,3]
>>> reduce(func2,list2)
21

これは最初に1,5が引数、次にその結果と2が引数…となります。

リスト内包表記

>>> func4 = lambda x:x*10
>>> [func4(x) for x in list2]
[10, 50, 20, 70, 30, 30]

map()に似てますが、さらに細かいことができます。

>>> map(func4,list2)
[10, 50, 20, 70, 30, 30]
>>> [func4(x) for x in list2 if x==2]
[20]

こんなふうに。
…それじゃfilterと変わりませんねw

>>> [x*10 for x in list2 if x==2]
[20]

こんなふうに、わざわざ関数を作らなくてもできますし、あと高速らしいです。あと、リスト以外のシーケンスも使えるらしいです。ちょっとよくわからないですが。。w

ジェネレータ

>>> def gensquares(x):
... for checknum in range(x):
... yield checknum**2
...
>>> for num in gensquares(10):
... print num
...
0
1
4
9
16
25
36
49
64
81

…appendでリストを返すんじゃだめなの? とか言いたくなりますが、たしかにこっちのほうが綺麗だけど…こんなコード思いつける自信がないw
要はyieldを使用して返り値をなんども出すことみたいです。

今回は前回飛ばしたところのリベンジ編でした
ちなみにNetwalkerでマックでテストしましたw(投稿は家のメインマシンからですが)

忘れてましたが、アキバでジャンクデスクトップ機買いましたw 2kでした。HP製。爆熱Pen4 3.0GHz,512MB RAM,40GBHDD,WinXPPro。すごく重量的に重かったw 帰ってとりあえずバラそうと思ったらトルクスネジ(弄り止め付き)の物理セキュリティロックがかかってたので、とりあえずレンチセットを買うところから始めないといけないw なんか2kの中を開けるためのレンチに1k出すのは馬鹿らしいですが。。。w
そうそう、そのときにアニメイトで結衣と京子の液晶クリーナ付きストラップを購入。600円くらい。….今考えるとちょいと高いですが、常に結京いちゃらぶを見れると思うともうお金なんかどうでも良くなります。

.oO(IBMロゴストアのTシャツとノートが欲しくなってきたw 自重するけど…w
そのうち写真で独立記事書きたいです。
風邪引きましたw 鼻炎かと思ってたら鼻水が止まりませんし、頭痛がw 発熱してはいませんが…w みなさんも体調管理にはお気をつけを…。 加湿器欲しい

Permanent link to this article: http://lga128.nekobaka.net/2012/01/haji_py_part3/

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次の HTMLタグおよび属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Time limit is exhausted. Please reload the CAPTCHA.