2010-12-15 10 views
0

私は、そのAPIを使って、いくつかのソフトウエアのアドオンを書いています。私が必要とするのは、必要なデータを抽出することです。 私は思考のAPIクラスに行くために 'FOR'を使用します。各オブジェクトには、インデックス(0から)、タイプ(Lin、Ptpなど)、および値というプロパティがあります。オブジェクトのリストを見て、私は2つのタイプのオブジェクトに興味があります - タイプ 'Lin'または 'Ptp'を持つオブジェクト。ので、いくつかの条件が満たされる必要があります。繰り返しの中の複数の条件、Python

林型にしたよう:

  • 林の前にいくつかのPTPが(ただし、それらの間の他のタイプの他のオブジェクトがあるかもしれない)がある場合に、林はPTPの値を取得します[ Ptp .... Lin]。
  • Linの前に他のLinがある場合(他の種類のオブジェクトもあるかもしれませんが)、Linはその直前のLinの値[Lin .... Lin]を取得します。
  • Linの前にLinもPtpもない場合(他の種類のオブジェクトもあるかもしれませんが)、Linは値 "0" [... Lin]を取得します。 PTPの種類については

、それは常に独自の値を取得します

私はPythonで初心者ですと、私のthoughsは、現在混在していると私は、適切なアルゴリズムを考え出すことはできません。私はそれがこのような気にいらなければなりません考えていた

:ここ

for object in obects: 
    If object.type == Ptp: 
    ...object gets its own value 
    elif object.type == Lin: 
    ... 

、私はあなたがオブジェクトを反復処理することをお勧めしたい[...Lin]または[Lin...Lin]または[Ptp...Lin]

+0

あなたの質問は理解しづらいです。いくつかのコードを投稿すると役立ちます。 – dheerosaur

+0

コードはまだありません。 – Maks

+0

「オブジェクトが独自の価値を得る」とはどういう意味ですか? – Johnsyweb

答えて

1

に応じて他の3つの条件があるはずです、 LinまたはPtpタイプの最後の発生を覚えておいてください(それらの可能性もありますが...):

lastOccurrence = None 
for obj in objects: 
    if obj.type not in ('PtP', 'Lin'): 
     continue 

    if obj.type == 'Lin': 
     if lastOccurrence is not None: 
      obj.value = lastOccurrence.value 
     else: 
      obj.value = "0" 

    lastOccurrence = obj     

またはそのようなもの...

2

私はPythonの初心者なので、私の考えは今混在しており、適切なアルゴリズムを思いつくことはできません。

あなたが適切なアルゴリズムを思い付くしようとしている場合は、はバック歩を踏み出します。 Python(C++、Fortran、Logo、Awkなど)を忘れて、解決しようとしている問題について考えてみましょう。紙に擬似コードを書くことを試みてください。

あなたの擬似コードから、Pythonはより明白になり、StackOverflow(例えば)に関するより具体的な質問や、同僚の質問が難しくなる可能性があります。

+0

それはあなたがページにそれを見ることができました – Maks

+1

それは十分に詳細にも近くないです。考え続ける。 –

0

私はfinite-state machineまたはFSMというAPIオブジェクトを使用しています。さまざまなタイプと関連するプロパティに遭遇すると、FSMの「状態」に表示された内容に関する情報を格納できます。この状態は、次の「イベント」(反復処理中の項目)が発生または遭遇したときに何が起こるかを決定します。

FSMは、(ほとんどの言語で)傾けてプログラムするのはかなり単純な概念で、この種の問題に非常に役立ちます。

関連する問題