1

同様の質問OOP python - Removal class instance from a listを見たことがありますが、解決策がうまくいきません。

クラス全体のテストを行いました。そして、結果はテストに合格していません。

私はpython 3.4.4を使用しています

import random

シンプルなクラス

class J():
    def __init__(self):
        self.jota = 0

    def up_j(self):
        self.jota = random.choice([2, 0])

    def get_j(self):
        return self.jota

    def __str__(self):
        return str(self.jota)

クラスのインスタンスを追加できるリスト

a = []

クラスインスタンスの追加

for i in range(20):
    a.append(J())

ちょっと変えて

for e in a:
    e.up_j()

これが私が正しくしたいFUNCTIONです

def x(a):
    for i, o in enumerate(a):
        if o.get_j() == 0:
           del a[i]
    return a

機能の適用

a = x(a)

テスト中!結果のすべての数値がゼロになることに注意してください。しかし、そうではありません

for each in a:
    print(each)

結果!

2
2
0
0
...
4

1 に答える 1

2

反復中にリストから値を削除しています。これはほとんど機能しません。反復中にリストから値を削除する代わりに、新しいリストを作成し、必要な値を追加します (つまり、削除しません)。

def x(a):
    ret = []
    for i, o in enumerate(a):
        if o.get_j() != 0:
           ret.append(o)
    return ret
于 2016-06-14T23:44:03.910 に答える