SUPPORT UKRAINE
- Your indifference to the act of cruelty can thrive rogue nations like Russia -
タグ
python
を含むブログ一覧
【Python 雑談・雑学】 list comprehension (リスト内包表記) は節度を持って使ってください、という話
Published 2020年5月21日20:21 by mootaro23
渡されたコードをチェックしていたら、こんな感じの内包表記が含まれていました。
friends = ["Nana", "Saki", "Yuka"]
guests = ["Taro", "Nana", "jiro", "saki", "saburo", "shiro", "Hana"]
present_friends = [ name.title() for name in gu…
Python 雑談・雑学 - else ステートメントは if 文だけではなくて for 文とも使えるよ、と教えたら感心された話
Published 2020年5月20日16:04 by mootaro23
Python Topic:
else ステートメントは if 文だけではなくて for 文とも使えるよ、と教えてあげたら感心された話。
for 文でループしながら処理を行っている場合、
処理を続けるかループを抜けるかを判断するために、
1つの変数をフラグとして利用する、というのはよくあること。
でも for ~ else 文を使えばフラグ変数を用意しなくても大丈夫。
…
Python 雑談・雑学 その1
Published 2020年5月18日21:09 by mootaro23
Python Topic:
今日同僚と Python 雑談をしていて、ちょっと悩んでいる人が多かった話題。
Question 1:
はてさて、何が出力されるでしょうか?
x = 35 and 0
print(x)
Question 2:
では、これは何が出力されるでしょうか?
x = 0 or 35
print(x)
Question 3:
…
Python Cookbook [Implementing the Iterator Protocol : イテレータープロトコルの実装]
Published 2020年5月9日9:29 by mootaro23
Problem:
イテレーションをサポートするカスタムオブジェクトを作成したいが、イテレータプロトコルの実装では苦労したくない。
Solution:
イテレーションをサポートするオブジェクトを作成する一番簡単な手段は generator 関数を利用することでしょう。
" Delegating Iteration " の項で取り上げたクラスを再利用してみます。
今回は Nod…
Python Cookbook [Creating New Iteration Patterns with Generators : ジェネレーターを利用した独自イテレーションパターンの実装]
Published 2020年5月7日19:19 by mootaro23
Problem:
range() や reversed() といった組み込み関数とは異なるイテレーションパターンを実装したい。
Solution:
generator 関数を利用して実装します。
例えば、ある範囲内、あるステップ数で浮動小数点数を生成したいなら次のようになるでしょう。
def float_range(start, stop, step):
…
Python Cookbook [Delegating Iteration : 独自クラスへのイテレーション機能の実装]
Published 2020年5月1日19:41 by mootaro23
Problem:
list や tuple といったイテラブルを属性値として含む独自のコンテナクラスがある場合に、そのクラス自体でイテレーション機能を提供したい。
Solution:
クラス内で __iter__() メソッドを定義し、実態として、内部で保持するコンテナのイテレーターに動作をお任せするだけです、楽チンです。
class Topping:
def …
Python Cookbook [Manually Consuming an Iterator : 手作業によるイテレーション操作]
Published 2020年4月24日21:08 by mootaro23
今回からイテレーション関連の tips を取り上げていきます。
Problem:
イテラブル (iterable) 中の要素を for ループを使わずに処理しろ、って、無茶言うよ、本当に。
Solution:
手作業でイテラブルを処理するには next() 関数を利用し、コード内で StopIteration 例外を捕まえるようにします。
例えば、ファイルから手作業で1…