2

私はいくつかの練習問題をやっていて、1 つのプログラムがリストの数字を 99 に変更するように求めてきました。数値を99に変更すると、次の数値に移動するときに、99が偶数かどうかをチェックするという問題が発生しています。これは望ましくありません。元の値をチェックしたいのです。私が変更したものではなく、そこにありました。

d = [9, 8, 2, 15, 6, 33, 10, 4]
i = 1
while i < len(d) - 1 :
    if d[i-1]%2 == 0 :
        d[i] = 99
    i = i + 1

print d

戻り値[9, 8, 99, 15, 6, 99, 10, 4]

返してほしい[9,8,99,99,6,99,10,99]

元の値を変更せずに元のリストに 99 を追加するにはどうすればよいでしょうか? pop や insert などのリスト メソッドは使用できません。

4

4 に答える 4

5

これを試して。

d = [9, 8, 2, 15, 6, 33, 10, 4]
for i in reversed(xrange(1, len(d))):
  d[i] = 99 if d[i - 1] % 2 == 0 else d[i]
于 2013-10-23T07:34:51.117 に答える
4

降順を繰り返すことをお勧めします。

d = [9, 8, 2, 15, 6, 33, 10, 4]
for x in xrange(len(d)-1, 0, -1):
    if d[x - 1] % 2 == 0:
        d[x] = 99
print d

この場合、次の反復は値を変更せずに動作します。

または、新しいものを作成できますlist

または前の値の変数を追加して、ifステートメントで使用できます

d = [9, 8, 2, 15, 6, 33, 10, 4]
previous = d[0]
for i, x in enumerate(d[1:]):
    if previous % 2 == 0 :
        previous = d[i]
        d[i] = 99
    else:
        previous = d[i]

print d
于 2013-10-23T07:24:04.127 に答える
0

これを試して:

d = [9, 8, 2, 15, 6, 33, 10, 4]

prev=d[0]
for i,j in enumerate(d):
        if prev%2==0:
                prev=j
                d[i]=99
        else:
                prev=j

print d
于 2013-10-23T07:55:01.290 に答える
0

リストを逆方向に検索する

  1. 最後と最後の値の前を参照 (n-1、n-2)
  2. 必要に応じて最後の値を変更します
  3. 前の値に移動 (n-2,n-3)
  4. リスト全体が更新されるまで繰り返します
于 2013-10-23T07:18:30.823 に答える