[解決済み] PythonでStopIterationエラーを回避する方法
質問
複数のリストから変数を引っ張ってくる行があるのですが、その際に
StopIteration
エラーが発生し、次の行に進むことができます。今のところbreak関数を使っていますが、これによって
StopIteration
しかし、リストの最初の項目しか得られず、プリントアウトするとその後に空白行が残ります。
以下は、同じ問題を持つ2つのイテレーションです。
def compose_line5(self, synset_offset, pointer_list):
self.line5 = ''''''
for item in pointer_list:
self.line5 += '''http://www.example.org/lexicon#'''+synset_offset+''' http://www.monnetproject.eu/lemon#has_ptr '''+pointer_list.next()+'''\n'''
break
return self.line5
def compose_line6(self, pointer_list, synset_list):
self.line6 = ''''''
for item in synset_list:
self.line6 += '''http://www.example.org/lexicon#'''+pointer_list.next()+''' http://www.monnetproject.eu/lemon#pos '''+synset_list.next()+'''\n'''
break
return self.line6
これは、ブレークを使用しない場合に出るエラーです。
Traceback (most recent call last):
File "wordnet.py", line 225, in <module>
wordnet.line_for_loop(my_file)
File "wordnet.py", line 62, in line_for_loop
self.compose_line5(self.synset_offset, self.pointer_list)
File "wordnet.py", line 186, in compose_line5
self.line5 += '''http://www.example.org/lexicon#'''+self.synset_offset+''' http://www.monnetproject.eu/lemon#has_ptr '''+self.pointer_list.next()+'''\n'''
StopIteration
それとも、iter()を使用するすべてのメソッドで例外をキャッチしなければならないのでしょうか?
解決方法は?
で
compose_line5
の代わりに
pointer_list.next()
を使用します。
item
- をすでに反復しています。
pointer_list
.
について
compose_line6
ということは、2つのリストに対して同時に反復処理を行いたいようですね。 の一番上の答えを使ってください。
2つのリストを反復して、各反復ごとに各リストから1つの要素を取得する、より良い方法はありますか?
(両方のリストの長さが同じであると仮定しています)
はい、イテレータプロトコルは
StopIteration
(を呼び出した場合、(エラーではなく、反復処理の終了を示す例外が発生するだけです)。
.next()
を手動で追加します。Pythonicな使い方は、通常のイテレータとして(例えばループさせるなど)使用することであり、その際に
.next()
を追加しました。
あなたのコードには、その先にもいくつか問題があるので、見てみるといいでしょう。 http://www.python.org/dev/peps/pep-0008/
例えば
''''''
というときに
''
で十分です。 代わりに
+=
リストを作成して、最後に結合するのがよいでしょう。 関数から返すだけなら、なぜselfに格納するのかよくわかりません。
関連
-
Python百行で韓服サークルの画像クロールを実現する
-
[解決済み】LogisticRegression: Pythonでsklearnを使用して、未知のラベルタイプ: '連続'を使用しています。
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Pythonの非常に便利な2つのデコレーターを解説
-
Python 人工知能 人間学習 描画 機械学習モデル作成
-
python implement mysql add delete check change サンプルコード
-
FacebookオープンソースワンストップサービスpythonのタイミングツールKats詳細
-
[解決済み】ImportError: PILという名前のモジュールがない
-
[解決済み】インポートエラー。モジュール名 urllib2 がない
-
[解決済み] 'int'オブジェクトに'__getitem__'属性がない。
-
[解決済み】LogisticRegression: Pythonでsklearnを使用して、未知のラベルタイプ: '連続'を使用しています。
-
[解決済み】Python: OverflowError: 数学の範囲エラー
-
[解決済み] 2つのリストに対して反復処理を行い、各反復処理ごとに各リストから1つの要素を取得する、より良い方法はないでしょうか?[重複している]。