Pythonでの検索最適化

ジャック
def CountingVallys(PathsTaken):

    #Converts the Strings U and D into 1 and -1 respectively
    Separate_Paths = [i for i in PathsTaken]
    for index, i in enumerate(Separate_Paths):
        if i == "D":
            Separate_Paths[index] = -1
        else:
            Separate_Paths[index] = 1

    Total_travels = [sum(Separate_Paths[0:i+1]) for i in range(len(Separate_Paths))]

    #ValleyDistance shows the indexes where the traveller is below sea level and Valley Depth shows the depth at those
    #Indexes
    ValleyDistance = []
    ValleyDepth = []
    for Distance, Depth in enumerate(Total_travels):
        if Depth < 0:
            ValleyDistance.append(Distance)
            ValleyDepth.append(Depth)


    #Checks the distance between each index to shows if the valley ends (Difference > 1)
    NumberOfValleys = []
    DistanceOfValleys = []
    TempDistance = 1
    for index, Distance in enumerate(ValleyDistance):

        # Check if final value, if so, check if the valley is distance 1 or 2 and append the final total of valleys
        if ValleyDistance[index] == ValleyDistance[-1]:
            if ValleyDistance[index] - ValleyDistance[index - 1] == 1:
                TempDistance = TempDistance + 1
                DistanceOfValleys.append(TempDistance)
                NumberOfValleys.append(1)
            elif ValleyDistance[index] - ValleyDistance[index - 1] > 1:
                DistanceOfValleys.append(TempDistance)
                NumberOfValleys.append(1)

        #For all indexes apart from the final index
        if ValleyDistance[index] - ValleyDistance[index-1] == 1:
            TempDistance = TempDistance + 1
        elif ValleyDistance[index] - ValleyDistance[index-1] > 1:
            DistanceOfValleys.append(TempDistance)
            NumberOfValleys.append(1)
            TempDistance = 1

    NumberOfValleys = sum(NumberOfValleys)

    return NumberOfValleys



if __name__ == "__main__":
    Result = CountingVallys("DDUDUUDUDUDUD")
    print(Result)

熱心なハイカーは、ハイキングの詳細な記録を保持しています。ハイキングは常に海面で開始および終了し、各ステップアップ(U)またはダウン(D)は高度の単位変化を表します。次の用語を定義します。

谷とは、海面からのステップダウンから始まり、海面へのステップアップで終わる、海面下の一連の連続したステップです。

通り抜けた谷の数を見つけて印刷します。

この質問では、実行が長すぎるためにフラグが立てられ、それを高速化するために明確な最適化を行うことができるかどうか疑問に思っています。「for-loops」の使用は責任があると思いますが、私のステップを実行する他の方法がわかりません。

lllrnr101
Total_travels = [sum(Separate_Paths[0:i+1]) for i in range(len(Separate_Paths))]

上記のコードで、なぜすでに実行した計算を繰り返したいのですか?sum(Separate_Paths [0:i + 1])= sum(Separate_Paths [0:i] + Separate_Paths [i + 1]

効率的な方法でリストTotal_travelsを作成できます。これで、プログラムの実行時間が長すぎることに対処できます。

>>> a
[2, 6, 4, 9, 10, 3]
>>> cumulative_sum = []
>>> sum_till_now = 0
>>> for x in a:
...     sum_till_now += x
...     cumulative_sum.append(sum_till_now)
... 
>>> cumulative_sum
[2, 8, 12, 21, 31, 34]
>>> 

numpyにはcumsum組み込まれているので、あなたの問題にはやり過ぎだと思います。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してくださいdebugcn@gmail.com

編集
0

コメントを追加

0

関連記事

分類Dev

検索の最適化

分類Dev

検索最適化

分類Dev

Django全文検索の最適化-Postgres

分類Dev

ApacheLucene-検索の最適化

分類Dev

JSON検索結果の最適化

分類Dev

mysqlでの検索クエリの最適化

分類Dev

Pythonのテキストコーパスでの最適化された正規表現検索

分類Dev

Parallelを使用したC#でのファイル検索の最適化

分類Dev

非常に大きなcsvファイルでの検索の最適化

分類Dev

PostgreSQLで連結された名と姓の検索の最適化

分類Dev

文字列の長いリストで検索を最適化する

分類Dev

検索最適化を使用しないのはなぜですか?

分類Dev

複数の検索条件に対する検索クエリの最適化

分類Dev

段落内の単語の検索を最適化する

分類Dev

パワーセットの検索の最適化

分類Dev

文字列内の単語の文字を検索し、最適化

分類Dev

単純な検索アルゴリズムの最適化

分類Dev

ペア検索アルゴリズムのJavaScript最適化

分類Dev

scipyの最近傍検索を最適化する

分類Dev

辞書検索と挿入の最適化

分類Dev

検索機能が遅すぎるrecordclasspythonの最適化

分類Dev

テキストを検索するクエリの最適化

分類Dev

副選択検索クエリの最適化

分類Dev

データベース最適化の挿入と検索

分類Dev

ApacheLuceneを使用した検索の最適化

分類Dev

NEO4j:検索暗号クエリの最適化

分類Dev

検索RoRを最適化する

分類Dev

BASHスクリプトでファイル内のテキストを検索/検索するための最良の/最適化された方法

分類Dev

Pythonでのループの最適化

Related 関連記事

ホットタグ

アーカイブ