いろいろ備忘録日記

主に .NET とか Java とか Python絡みのメモを公開しています。

Pythonメモ-49 (startswithとendswithはタプルも受け付ける) (str, bytes, bytearray)

概要

知らなかったのでメモメモ。ドキュメントみたら、ちゃんと書いてあった。。。

大抵の言語では、文字列などに startswith / endswith みたいなメソッドが存在していますが

pythonの場合は、タプルも受け付けてくれる。何気にすごい便利です。いちいちループしなくていいし。

注意点として、タプルじゃないと駄目です。リストを渡すとエラーになります。

サンプル

In [3]: l = ['Javascript', 'Java', 'CSharp', 'Python', 'Ruby', 'Go', 'Rust']

In [4]: l
Out[4]: ['Javascript', 'Java', 'CSharp', 'Python', 'Ruby', 'Go', 'Rust']

In [5]: suffix = ('t',)

In [6]: [x for x in l if x.endswith(suffix)]
Out[6]: ['Javascript', 'Rust']

In [7]: suffix = ('t', 'a', 'n')

In [8]: [x for x in l if x.endswith(suffix)]
Out[8]: ['Javascript', 'Java', 'Python', 'Rust']

In [9]: suffix2 = list(suffix)

In [10]: [x for x in l if x.endswith(suffix2)]
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-10-377dff11f00d> in <module>()
----> 1 [x for x in l if x.endswith(suffix2)]

<ipython-input-10-377dff11f00d> in <listcomp>(.0)
----> 1 [x for x in l if x.endswith(suffix2)]

TypeError: endswith first arg must be str or a tuple of str, not list

参考情報

4. 組み込み型 — Python 3.6.3 ドキュメント


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。