Hatena::Groupfukuoka-py

taketin.py RSSフィード

 | 

2011-11-28

初めてのPython 5章数値, 6章ダイナミックな型付け, 7章文字列

00:28 | 初めてのPython 5章数値, 6章ダイナミックな型付け, 7章文字列 - taketin.py を含むブックマーク はてなブックマーク - 初めてのPython 5章数値, 6章ダイナミックな型付け, 7章文字列 - taketin.py

5章 数値

気になるとこだけ。


三項演算子

if foo:
    val = bar
else:
    val = baz

val = bar if foo else val = baz

if節を後置する書き方。


・切り捨て演算

x // y

少数部分を切り捨てる


・bool型

True, False は 1, 0 とほぼ同じ。

これはboolクラスのインスタンスであり、boolクラスはintのサブクラスである。

True + 1    # 2
False + 1    # 1

といった式も通る。


6章 ダイナミックな型付け

変数リファレンス

>>> L1 = [1, 2, 3]
>>> L2 = L1    # リファレンスコピー
>>> L1[0] = 0
>>> L2    # 影響を受ける
[0, 2, 3]

~

>>> L1 = [1, 2, 3]
>>> L2 = L1[:]    # 値のコピー
>>> L1[0] = 0
>>> L2    # 影響を受けない
[1, 2, 3]

・同等と同一

>>> L = [1, 2, 3]
>>> M = L
>>> L == M     # 同等であるか
True
>>> L is M     # 同一であるか
True

~

>>> L = [1, 2, 3]
>>> M = [1, 2, 3]
>>> L == M     # 同等であるか
True
>>> L is M     # 同一であるか
False

~

# 小さい値はキャッシュが使用される
>>> X = 42
>>> Y = 42
>>> X == Y     # 同等であるか
True
>>> X is Y     # 同一であるか(キャッシュが使用され、同一とみなされている)
True

※ sysモジュールの getrefcount() メソッドリファレンスカウントを得る事ができる。



7章 文字列

・特徴

  • 不変性のシーケンスオブジェクト
  • シングルクォートとダブルクォートは同じ
  • トリプルクォートで複数行の文字列を作成できる
  • インデクシング、スライシングが利用可能
  • スライシングの引数は3つ指定可能。3つ目はステップ数を示す。
>>> S = 'abcdefghijklmnop'
>>> S[1:10:2]
'bdfhj'
>>> S[::2]
'acegikmo'

・文字列フォーマット

% 演算子を文字列に対して使う場合は Cのsprintfと同じ機能にオーバーロードされている

>>> "my name is %s" % 'taketin'
'my name is taketin'
>>> "%d %s " % (1, 'spam')
'1 spam'

~

# 全てのオブジェクトは文字列への変換が可能
>>> "%s -- %s -- %s" % (42, 3.14, [1, 2, 3])
'42 -- 3.14 -- [1, 2, 3]'

# ディクショナリを使用したフォーマット
>>> "%(n)d %(x)s" % {"n": 1, "x": "spam"}
'1 spam'

>>> reply = """
Hello %(name)s!
Your age squared is %(age)s
"""
>>> values = {'name': 'taketin', 'age': 33}
>>> print reply % values
Hello taketin!
Your age squared is 33

ビルトイン関数 vars() を使うと、その時存在する変数と値を全てディクショナリに入れて返してくれるので上記のようなケースに使える。

>>> name = 'taketin'
>>> age = 33
>>> reply = """
Hello %(name)s!
Your age squared is %(age)s
"""
>>> print reply % vars()
Hello taketin!
Your age squared is 33

・便利なメソッド

  • replace()
  • join()
  • find()
  • split()
  • rstrip()
  • upper()
  • isalpha()
  • endswith()

などなど。シンプルで分かりやすい。


・stringモジュール

python2.0 までは stringモジュールという標準ライブラリに現在の文字列メソッドとほぼ同じものが用意されていた。

現在も後方互換用に stringモジュールは存在する。

NagaNaga2012/06/06 20:17Good point. I hadn't tohguht about it quite that way. :)

nnualyonnualyo2012/06/07 05:31NOdyAn <a href="http://hqxoeaxqhvky.com/">hqxoeaxqhvky</a>

ouludvfouludvf2012/06/08 01:44mudPR0 , [url=http://zwbgzszyeefx.com/]zwbgzszyeefx[/url], [link=http://guciiczuqcpp.com/]guciiczuqcpp[/link], http://gkbdepkefiyo.com/

ojnuriuynojnuriuyn2012/06/12 02:02KD0eOn <a href="http://ubqdclxpowqv.com/">ubqdclxpowqv</a>

vxedycgfptpvxedycgfptp2012/06/13 07:29tEQBYI , [url=http://pqeompbtxzvd.com/]pqeompbtxzvd[/url], [link=http://bdlsteyavifc.com/]bdlsteyavifc[/link], http://csxegvnmjspw.com/

 |