0

このリストを考えてみましょう:

test = ["stas", "doug", "saman", "movie"]
for q in range(len(test)):
    PreGroup = None
    if (q > 0):
        PreGroup = test[q-1]
    print PreGroup

どうすればNONEを取り除くことができますか? 最初の出力として?そこに q-1 を設定する必要があります。または、少なくとも、現在のインデックスの前に PreGroup を 1 つのインデックスにする必要があるためだと思います。

私の PreGroup には None があってはなりません。コードの後半で渡すので、NONE になるとエラーが発生します。

ありがとう。

4

4 に答える 4

1

0 のPreGroup場合は (None 以外に) 設定したくありません。それは問題ありませんが、設定されているかどうかの値を出力します。の中にも入れると、に設定されている場合にのみ印刷されます。の外側に存在する必要がないため、行を削除することもできます。qPreGroupprintifPreGrouptest[q-1]PreGroup = NonePreGroupif

ただし、問題を解決するさらに良い方法は、ループを 0 ではなく 1 から開始することです。qそうすれば、 が 0かどうかを確認する必要さえありませんrange(1, len(test))

于 2013-09-12T22:53:38.497 に答える
1

何が欲しいのかを明確に表現していませんが、ループの反復ごとに有効な現在のグループtest[q]と有効な前のグループの両方が必要であると言っていると思います。test[q-1]その場合、ではなくrange(1, len(test))make qstart at を使用できます。10

または、このループでインデックスを使用せずにこれを行うこともできます。

for (pre_group, group) in zip(test, test[1:]):
    print pre_group, group
于 2013-09-12T22:56:48.300 に答える
-2

たぶん、このようなもの

test = ["stas", "doug", "saman", "movie"]
for q in test:
    PreGroup = None
    q = test.index(q)
    if q > 0:
        PreGroup = test[q]
    print PreGroup
于 2013-09-12T22:53:11.233 に答える