Bei gegebener Liste besteht die Aufgabe darin, ein Python-Programm zu schreiben, das alle Indizes extrahiert, aus denen eine Vorzeichenverschiebung aufgetreten ist.

Eingabe: test_list = [7, 6, -3, -4, -7, 8, 3, -6, 7, 8]

Ausgabe : [1, 4, 6, 7]

Erläuterung: 6 -> -3 beim 1. Index, -7 -> 8 beim 4. Index usw. sind Verschiebungen.

Eingabe: test_list = [7, 6, -3, -4, -7, 8, 3, 6, 7, 8]



Ausgabe: [1, 4]

Erläuterung: 6 -> -3 beim 1. Index, -7 -> 8 beim 4. Index sind Verschiebungen.

Methode 1: Verwenden von Schleifen- und bedingten Anweisungen

In diesem Fall überprüfen wir mithilfe von bedingten Anweisungen, ob das aktuelle und das nächste Element entgegengesetzte Vorzeichen haben. Die Schleife wird verwendet, um alle Elemente zu durchlaufen.

Beispiel:

test_list = [7, 6, -3, -4, -7, 8, 3, -6, 7, 8] 
  
print("The original list is : " + str(test_list)) 
  
res = [] 
for idx in range(0, len(test_list) - 1): 
  
    
    if test_list[idx] > 0 and test_list[idx + 1] < 0 or test_list[idx] < 0 and test_list[idx + 1] > 0: 
        res.append(idx) 
  
print("Sign shift indices : " + str(res)) 

Ausgabe:

Die ursprüngliche Liste lautet: [7, 6, -3, -4, -7, 8, 3, -6, 7, 8]

Vorzeichenverschiebungsindizes: [1, 4, 6, 7]



Methode 2: Verwenden des Listenverständnisses

Ähnlich wie oben beschrieben, bietet dies jedoch eine Einzeiler-Alternative unter Verwendung des Listenverständnisses.

Beispiel:

test_list = [7, 6, -3, -4, -7, 8, 3, -6, 7, 8] 
  
print("The original list is : " + str(test_list)) 
  
res = [idx for idx in range(0, len(test_list) - 1) if test_list[idx] > 
       0 and test_list[idx + 1] < 0 or test_list[idx] < 0 and test_list[idx + 1] > 0] 
  
print("Sign shift indices : " + str(res)) 

Ausgabe:

Die ursprüngliche Liste lautet: [7, 6, -3, -4, -7, 8, 3, -6, 7, 8]

Vorzeichenverschiebungsindizes: [1, 4, 6, 7]