任意の文字列,文字数のTrue/False

Defining the alphabet to any letter string to then later use to check if a word has a certain amount of characters – StackOverflow

汎用性という意味では,正規表現がベストだけど.

import re
from string import ascii_lowercase


def is_three_letters(word):
    return bool(re.match(r"[a-z]{3}$", word))


def is_three_letter_word(word):
    if len(word) == 3:
        if all(ch in ascii_lowercase for ch in word):
            return True
    return False


def is_three_letter_word2(word):
    if len(word) == 3:
        for s in word:
            if s not in ascii_lowercase:
                return False
        else:
            return True
    else:
        return False
    
    
def is_three_letter_word3(word):
    count = 0
    for s in word:
        if s not in ascii_lowercase:
            return False
        else:
            count += 1
            if count > 3:
                return False
    if count == 3:
        return True
    else:
        return False
    

def is_three_letter_word4(word):
    if len(word) == 3:
        return word.islower()
    else:
        return False

    
def is_three_letter_word5(word):
    if word.islower():
        if len(word) == 3:
            return True
        else:
            return False
    else:
        return False
%timeit is_three_letters("ice")
%timeit is_three_letter_word("ice")
%timeit is_three_letter_word2("ice")
%timeit is_three_letter_word3("ice")
%timeit is_three_letter_word4("ice")
%timeit is_three_letter_word5("ice")
%timeit is_three_letters("four")
%timeit is_three_letter_word("four")
%timeit is_three_letter_word2("four")
%timeit is_three_letter_word3("four")
%timeit is_three_letter_word4("four")
%timeit is_three_letter_word5("four")
%timeit is_three_letters("111")
%timeit is_three_letter_word("111")
%timeit is_three_letter_word2("111")
%timeit is_three_letter_word3("111")
%timeit is_three_letter_word4("111")
%timeit is_three_letter_word5("111")

2.6 µs ± 58.4 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
1.47 µs ± 9.95 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
726 ns ± 3.95 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
972 ns ± 17.3 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
462 ns ± 8.28 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
501 ns ± 7.92 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
2.49 µs ± 10.2 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
318 ns ± 1.54 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
320 ns ± 5.34 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
1.14 µs ± 4.21 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
327 ns ± 3.12 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
506 ns ± 2.02 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
2.47 µs ± 88.2 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
1.27 µs ± 18.6 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
547 ns ± 1.88 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
394 ns ± 1.28 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
471 ns ± 3.23 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
331 ns ± 1.59 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

for…else…構文はpep8的には駄目だけど,この手の処理では便利.

広告
カテゴリー: 未分類 パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中