2017-09-27 7 views
0

私はリストにアクセスした要素のタブを維持するにはどうすればよいですか?

lis = ["Cat","Dog","Tiger","Elephant","Donkey","Fox"] 

が、私はいくつかの要素に、今私のリストは、今私はunchanged.Howの要素を返す必要が

lis = ["Lion","Dog","Tiger","Zebra","Donkey","Fox"] 

であるような

lis[0] = "Lion" 
lis[3] = "Zebra" 

を再割り当て言うのリストを持っています要素をループして、変更された要素を無視して、変更されていない要素を返しますか?私の考えは、何らかのチェックをして、すぐにチェック条件では、要素を無視して移動します。

注 - これを行うには、要素を削除する必要がありません。

答えて

3

変更された要素のインデックスを含むデータ構造を保持する必要があります。次に、ループ中にアイテムのインデックスがその構造内にあるかどうかを確認します。

理想的には、あなたが使用したいset(また、そのインデックスを取得中にコンテナを横断するため)とenumerate(高速メンバーシップのテスト用):

changed = {0, 3} # after you modify the list 
for index, elem in enumerate(list): 
    if index not in changed: 
     # do something with element that wasn't changed. 
+0

私は別のセットを維持しています。 –

1

@JimFasarakisHilliardはこれにあなたの潜在的なバックエンドを与えています問題(+1)は、完全なソリューションを形成する潜在的なフロントエンドに取り組むことができます:

def track(index): 
    changed.add(index) 
    return index 

changed = set() 

my_list = ["Cat", "Dog", "Tiger", "Elephant", "Donkey", "Fox"] 

my_list[track(0)] = "Lion" 
my_list[track(3)] = "Zebra" 

for index, element in enumerate(my_list): 
    if index not in changed: 
     print(element) # do something with element that wasn't changed. 
+0

あなたは新しい視点をソリューションに追加しました! –

関連する問題