インデックスループよりも速いと聞いて以来、繰り返しのためにイテレータを使用しようとしています。私がよく分からないことの1つは、シーケンスの終わりをきれいに扱う方法です。私が考えることができる方法はtry
とexcept StopIteration
です。これは私には醜いものです。Pythonイテレータをうまく使用する方法
より具体的には、2つのソートされたリストa
とb
のマージされたソート済みリストを印刷するように求められたとします。私は次のように書くでしょう
aNull = False
I = iter(a)
try:
tmp = I.next()
except StopIteration:
aNull = True
for x in b:
if aNull:
print x
else:
if x < tmp:
print x
else:
print tmp,x
try:
tmp = I.next()
except StopIteration:
aNull = True
while not aNull:
print tmp
try:
tmp = I.next()
except StopIteration:
aNull = True
どうやってそれを整えるのですか?
「b」とは何ですか? – detly
そのコードはほとんど判読できません。それが何をすべきか説明する。 –
aとbはソートされた2つのリストです。これらの2つのリストの要素を非増加順で印刷することです。 – nos