ariyasacca

カテゴリ一覧

Biz | SF | Software | tDiary | Web | ゲーム | サバティカル | スポーツ | ミステリ | メタル | 健康 | 投資 | 携帯 | 時事ネタ | 死生観 | 資格 | 雑記
2004|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|

2010-06-06 (日) [長年日記]

[雑記]リストを処理するときはリスト内包表記を使うのがPythonの流儀

Pythonでは、リスト(配列)を処理するのにfor文ループが必要ときは、まずリスト内包表記が適用できないか考えるのが流儀らしい。コードが短く簡潔になって、パフォーマンス面でも良いとのこと。

例題として、「ツイッターのパブリックタイムラインから日本のユーザの表示名だけ抜き出す」というのを考えてみる。

import urllib2
import json

# public_timeline取得
url = "http://twitter.com/statuses/public_timeline.json"
response = urllib2.urlopen(url)
statuses = json.loads(response.read())

# (1)for文
japan_users = []
for s in statuses:
    if s["user"]["time_zone"] == "Tokyo":
        japan_users.append(s["user"]["screen_name"])

print(japan_users)

# (2)filter, map
print(map(lambda s: s["user"]["screen_name"], filter(lambda s: s["user"]["time_zone"] == "Tokyo", statuses)))

# (3)リスト内包
print([s["user"]["screen_name"] for s in statuses if s["user"]["time_zone"] == "Tokyo"])

どれもprint関数の出力結果は[u'user_name1', u'user_name2']の様なリストになる。

  • C言語に似た構文の言語を触ることの多い自分としては真っ先に(1)のように書いてしまうところである。
  • (2)はfilter関数の結果をmap関数でscreen_nameだけ取り出している。
  • (2)をリスト内包に置き換えたものが(3)になる。

これまでの考え方を切り替えて、パッと(3)を思い付くようになることは、なかなか難しい。

参考

エキスパートPythonプログラミング(Tarek Ziade)

[携帯][時事ネタ]auの請求情報お知らせメールを設定しようとしてもタイムアウトしてしまう

もうタイトルのままで「馬鹿じゃないのか」と言いたいのだけど。

2010年9月請求分 (8月ご利用分) より、毎月郵送にてお届けしている請求書が、ケータイやパソコンで確認するWEB de 請求書に変わります。

2010年6月請求分から2010年8月請求分までは、郵送での請求書とWEB de 請求書の両方がご利用頂けます。

また、2010年9月ご請求分より、紙請求書発行停止特典を提供いたします。郵送での請求書を継続される場合は、申し込みが必要です (有料)。

上記と同内容の案内が封筒で届いた。ご丁寧に、携帯電話端末に設定している4桁の暗証番号が印字されている。いい迷惑である。

紙の請求書が有料になってしまうのは残念だが、しょうがないので請求情報が確定した段階でメールによる通知を受けられる「お知らせメール」というやつを設定しておくことにした。

設定は、ケータイからの操作と、PCのウェブブラウザからの操作と、どちらでも可能なようである。PCの場合は「auお客さまサポート」のサポートIDとパスワードを新たに作らなければならない。面倒なので手元のケータイから申し込むことにした。

  1. パンフレットの案内に従ってau oneトップメニューからWEB de 請求書にアクセスする
  2. 「WEB de 請求書 お知らせメール」設定変更を選ぶ
  3. メールの受け取り先に「このケータイ」を選び、送信ボタンを押す
  4. 「EZサーバーからの応答がありません」
  5. 再度送信ボタンを押す
  6. 「EZサーバーからの応答がありません」
  7. 再度送信ボタンを押す
  8. 「EZサーバーからの応答がありません」

馬鹿じゃないのか。

同じ質問ばかり繰り返すドラクエの王様じゃあるまいし。


最近のツッコミ

  1. 雷悶 (2023-06-24(土)22:25)「新大阪駅で降りると必ず視界に入るサムティ行くしかないのか~?」
  2. ブリネル (2023-06-24(土)20:58)「次はサムティアンド箕面ビールツアーしかないっしょ〜 DIE WITH ZERO〜」
  3. 雷悶 (2023-03-08(水)19:02)「10年後にはリゾマンを購入している筈っしょ~(言うだけ)」

参号館  の中の  日記(ariyasacca)

トップ «前の日記(2010-06-05 (土)) 最新 次の日記(2010-06-10 (木))» 編集