Python

Iteratoren in Python

Iteratoren in Python
Ein Iterator ist ein wertvolles Werkzeug für Python. Es ist ein Objekt, das verwendet wird, um alle Elemente einer Sammlung zu iterieren. Iterator ermöglicht den Zugriff auf die Elemente eines Containers, führt die Iteration jedoch nicht selbst durch. Es funktioniert wie ein Datenbankcursor und wird verwendet, um die Datensatzliste einzeln zu lesen. Zum Beispiel ein 'zum' Schleife, die die Werte eines Containers iteriert, arbeitet als Iterator. Python hat viele integrierte Iteratoren für iterierbare Objekte wie Listen, Tupel, Wörterbücher usw. Ohne diese Iteratoren 'itertools'-Funktionen können verwendet werden, um andere Iteratoren in Python zurückzugeben. Dieser Artikel zeigt, wie Sie die Schleife als Iterator, benutzerdefinierten Iterator, unendlichen Iterator und Steuerung des unendlichen Iterators in Python 3 verwenden. Einige Verwendungen des 'itertools'-Funktionen werden auch im letzten Teil dieses Tutorials erklärt.

Iteratormethoden

Jedes Iteratorobjekt enthält die folgenden zwei Methoden.

Diese Methode wird verwendet, um das iterierbare Objekt zu initialisieren. Das zurückgegebene Objekt hat die Methode '_ _Nächster_ _()'in Python 3.

Diese Methode gibt den nächsten Wert des iterierbaren Objekts zurück. Die Beziehung zwischen dem Iterator und dem iterierbaren Objekt ist im folgenden Diagramm dargestellt.

Iterieren mit Schleifen

Es wurde bereits erwähnt, dass die 'zum' Schleife ruft die 'Nächster()'-Methode implizit beim Iterieren eines iterierbaren Objekts. Wenn eine Schleife zum Iterieren eines iterierbaren Objekts verwendet wird, wird die 'zum' Schleife ruft die 'Nächster()' Methode implizit und die 'während' Schleife ruft die 'Nächster()' oder '__Nächster__()'-Methode, um den nächsten Wert des iterierbaren Objekts explizit zu lesen. Beide Schleifentypen rufen diese Methode weiterhin auf, bis die 'StopIteration'Signal wird erzeugt.

Beispiel 1: Iteration von iterierbaren Objekten mit 'for'-Schleife

Das folgende Skript zeigt die Verwendung von 'zum' Schleifen zum Iterieren von fünf verschiedenen iterierbaren Objekten. Der Erste 'zum' Schleife wird verwendet, um den String-Wert zu iterieren und jedes Zeichen des Strings in jeder Iteration zu drucken. Der Zweite 'zum'-Schleife wird verwendet, um den Inhalt einer vorhandenen Textdatei zu wiederholen und jede Zeile der Datei in jeder Iteration zu drucken. Der dritte 'zum' Schleife wird verwendet, um die Werte eines Tupels zu iterieren. Die vierte 'zum' Schleife wird verwendet, um die in einer Liste enthaltenen Werte zu iterieren. Der fünfte 'zum' Schleife wird verwendet, um die in einem Wörterbuch enthaltenen Werte zu iterieren.

# Iterieren eines Strings mit for-Schleife
print("String-Iteration mit for-Schleife")
str = "Python"
für val in str :
drucken(wert)
# Iterieren einer vorhandenen Datei mit der for-Schleife
print("\n\nDatei zeilenweise mit for-Schleife lesen")
for line in open("test.TXT"):
print(line, end="")
# # Iterieren eines Tupels mit einer for-Schleife
print("\n\nTupeliteration mit for-Schleife")
tup = ("Buch", "Papier", "Bleistift", "Stift")
für val in tup:
drucken(wert)
# Iterieren einer Liste mit der for-Schleife
print("\n\nListen-Iteration mit for-Schleife")
listdata = ["Designer", "Analyst", "Programmer","Administrator"]
für val in listdata:
drucken(wert)
# Durchlaufen eines Wörterbuchs mit der for-Schleife
print("\n\nWörterbuchiteration mit for-Schleife")
dictval = 'Meher': 95, 'Sakib': 97, 'Akhi': 70, 'Fiaz': 78
für Index in dictval :
print("%s hat %d Punkte erreicht" %(index, dictval[index]))

Ausgabe

Die folgende Ausgabe zeigt, dass die Zeichen des Zeichenfolgenwerts; die Zeilen der Prüfung.TXT Datei; und die Elemente der Tupel, Liste und Wörterbuch werden gedruckt, nachdem das Skript ausgeführt wurde.

Beispiel 2: Iterieren von Listen mit 'while'-Schleife

Das folgende Skript zeigt die Verwendung eines 'während' Schleife zum Durchlaufen einer Datenliste. Hier die 'iter()'-Methode wird verwendet, um das iterierbare Objekt zu initialisieren, und die 'Nächster()'-Methode wird verwendet, um den nächsten Wert des iterierbaren Objekts zu lesen. StopIteration Signal wird verwendet, um aus dem Unendlichen zu terminieren 'während' Schleife, wenn kein Element der Liste zum Lesen übrig ist.

# Definiere eine Liste
listdata = ['google.com', 'bing.com','yahoo.com', 'baidu.com', 'duckduckgo.com']
# Initialisiere das iterierbare Objekt
init_iter_object = iter(Listendaten)
print("Listendaten mit while-Schleife iterieren:\n")
# Deklarieren und unendliche while-Schleife
während Wahr:
Versuchen:
# next()-Methode wird verwendet, um den nächsten Wert zu iterieren
Wert = next(init_iter_object)
print(Wert)
außer StopIteration:
# Beenden Sie die Schleife, nachdem Sie alle Werte durchlaufen haben
Unterbrechung

Ausgabe

Die folgende Ausgabe zeigt, dass jeder Wert der Liste in jeder Zeile mit dem 'Nächster()'-Methode nach dem Ausführen des Skripts.

Beispiel 3: Iterieren eines Tupels mit der Methode '__next__()' und der Schleife 'while'

Im folgenden Skript sind beide 'Nächster()' und '__Nächster__()'-Methoden werden verwendet, um die Werte eines Tupels zu iterieren. Das 'iter()'-Methode wird verwendet, um das iterierbare Objekt mit dem Namen 'init_iter.' Hier die 'Nächster()'-Methode wird zweimal aufgerufen, um die ersten beiden Werte des Tupels zu drucken. Als nächstes eine unendliche 'während' Schleife wird verwendet, um die verbleibenden Werte des Tupels und die 'StopIteration'-Signal wird verwendet, um die Schleife zu beenden, wie im vorherigen Beispiel.

# ein Tupel definieren
animal_tuple =('Vogel','Löwe', 'Affe', 'Schlange', 'Elefant')
print("Die Werte des Tupels sind:\n")
# Initialisiere ein Iterator-Objekt mit iter()
init_iter = iter(tier_tuple)
# iteriere und drucke den Wert mit der next()-Methode
print(next(init_iter))
print(next(init_iter))
# Definiere eine unendliche while-Schleife
während Wahr:
Versuchen:
# iteriere und drucke den Wert mit der Methode __next__()
print(init_iter.__Nächster__())
außer StopIteration:
# Beenden Sie die Schleife, nachdem Sie alle Werte durchlaufen haben
Unterbrechung

Ausgabe

Die folgende Ausgabe zeigt, dass nach dem Ausführen des Skripts die ersten beiden Werte, 'Vogel' und 'Löwe,' werden mit dem 'Nächster()'-Methode, während die anderen drei Werte, 'Affe,"Schlange,' und 'Elefant,' werden mit dem '__Nächster__()' Methode.

Iteration mit einem benutzerdefinierten Iterator

Dieser Abschnitt zeigt, wie verschiedene Arten von benutzerdefinierten Iteratoren durch das Erstellen von Klassen implementiert werden können. Beide '__iter__()' und der '__Nächster__()'-Methoden werden in einer Klasse implementiert, und die 'während' Schleife wird verwendet, um die Werte des iterierbaren Objekts zu iterieren.  Im nächsten Teil dieses Artikels wird auch gezeigt, wie Sie einen unendlichen benutzerdefinierten Iterator erstellen und die Iteration steuern.

Beispiel 4: Verwendung eines einfachen benutzerdefinierten Iterators

Mit dem folgenden Skript können Sie den Wert von berechnen xnein indem Sie einen benutzerdefinierten Iterator verwenden, ohne eine integrierte Python-Funktion zu verwenden. Die Klasse mit dem Namen 'x_to_the_power_n' wird im Skript deklariert. Das '__drin__()'-Methode der Klasse initialisiert die Werte von x und nein die zum Zeitpunkt der Objekterstellung verwendet wird. Das '__iter__()' Methode initialisiert die Klassenvariable, die die 'Ergebnis' Variable der Berechnung in jeder Iteration. Die Werte von x und nein wird als Eingabe vom Benutzer übernommen. Ein Objekt der Klasse 'Zahlen' wird erstellt mit x und nein. Als nächstes ein iterierbares Objekt namens 'iter_obj' wird erstellt, um die '__Nächster__()' Methode für n-1 mal mit der 'während' Schleife, um den Wert von zu berechnen xnein. In jeder Iteration ist der Wert von x wird mit dem vorherigen Wert der 'Ergebnis'variabel. Nach Beendigung der 'während'Schleife, die'__Nächster__()'-Methode wird erneut aufgerufen, um den Wert von zu drucken xnein.

"Erstellen Sie eine Klasse, um die zu berechnen
x hoch n mit Iterator
"
Klasse x_to_the_power_n:
# Initialisieren Sie den Wert von x und n
def __init__(selbst, x=0, n=0):
selbst.x = x
selbst.n = n
# Iterierbare initialisieren
def __iter__(selbst):
selbst.Ergebnis = 1
kehre selbst zurück
# Berechnen Sie den Wert in jeder Iteration
def __nächster__(selbst):
wenn selbst.n >= 0:
selbst.Ergebnis *= selbst.x
selbst.n -= 1
kehre selbst zurück.Ergebnis
# Nimm die Werte von x und n
x = int(input("Geben Sie den Wert von x ein:"))
n = int(input("Geben Sie den Wert von n ein:"))
# Erstellen Sie ein Objekt der Klasse
Zahlen = x_to_the_power_n(x,n)
# Erstellen Sie ein iterierbares
iter_obj = iter(Zahlen)
Versuchen:
ich = 0
während ich < n-1):
# Rufen Sie den nächsten Wert mit der Methode next() ab
next(iter_obj)
i+=1
print("\n%d hoch %d ist %d" %(x,n,iter_obj.__Nächster__()))
außer StopIteration:
# Beenden Sie das Skript, wenn kein Wert vorhanden ist
print(next(iter_obj))

Ausgabe

Die folgende Ausgabe zeigt, dass 2 wird als Wert von . angenommen x und 4 wird als Wert von . angenommen nein. Das Skript berechnete also den Wert von 2sein 16.

Beispiel 5: Verwendung eines unendlichen benutzerdefinierten Iterators

Das folgende Skript druckt fortlaufend die durch 5 teilbaren Zahlen mit einer Verzögerung von einer Sekunde, bis der Benutzer drückt Strg + c um die 'KeyboardInterrupt'signal. Das Unendliche 'während'-Schleife wird hier verwendet, um einen unendlichen benutzerdefinierten Iterator zu erstellen. Das 'Zeit'-Modul wird am Anfang des Skripts importiert, um das 'schlafen()' Methode, um jede Ausgabe um eine Sekunde zu verzögern. Die Zahl 5 wird mit dem ' initialisiertnum'-Variable als erste teilbare Zahl im Skript, und die nächste Zahl wird durch Addieren von 5 mit dem vorherigen Wert der 'num'variabel.

# Zeitmodul importieren
Importzeit
"
Erstellen Sie eine Klasse, um die Zahlen zu generieren
die durch 5 stetig teilbar sind
"
Klasse Number_Divisible_by_five:
# Initialisieren Sie den Wert von num
def __iter__(selbst):
selbst.Anzahl = 5
kehre selbst zurück
# Berechnen Sie die nächste Zahl, die durch 5 . teilbar ist
def __nächster__(selbst):
next_num = selbst.num
Zeit.schlafen(1)
selbst.Anzahl += 5
zurück next_num
# Erstellen Sie ein Objekt der Klasse
Objekt = Zahl_Teilbar_durch_fünf()
# Iterierbares Objekt erstellen
iterObject = iter(Objekt)
# Endlosschleife definieren
während Wahr:
Versuchen:
# Gehen Sie zur nächsten Iteration
print(iterObject.__Nächster__())
außer KeyboardInterrupt:
print("Strg+C ist gedrückt.")
# Beende die Schleife, wenn Strg+C gedrückt wird
Unterbrechung

Ausgabe

Die folgende Ausgabe zeigt, dass die Zahl ab 5 gedruckt wurde und die nächsten Zahlen nacheinander mit einer Dauer von einer Sekunde kontinuierlich gedruckt wurden. Wenn der Benutzer gedrückt hat Strg + c nach dem Drucken der Nummer 60, die Nachricht 'Strg+C wird gedrückt.' wurde gedruckt, bevor das Skript beendet wurde.

Beispiel 6: Steuern eines benutzerdefinierten unendlichen Iterators

Das folgende Skript zeigt, wie Sie den benutzerdefinierten unendlichen Iterator stoppen, nachdem Sie eine bestimmte Anzahl von Iterationen abgeschlossen haben. Das '__iter__()' Methode der Klasse initialisiert die Werte der 'nein' und 'Ergebnis'Klassenvariablen. Das Skript berechnet die Quadrate der Zahlen, beginnend mit 1, die in der Variablen gespeichert sind nein, und drucke den Quadratwert von nein bis der Wert von nein ist größer als 5. Hier wird eine unendliche while-Schleife deklariert, um die '__Nächster__()' Methode, um den Quadratwert von . zu drucken nein. Wenn der Wert von nein erreicht 6, das 'StopIteration' Signal wird generiert, um die Schleife zu beenden.

# Zeitmodul importieren
Importzeit
"
Erstellen Sie eine Klasse zum Berechnen
das Quadrat der Zahl beginnt von 1 bis
der Wert der Zahl ist kleiner als 6
"
Klasse berechne_power:
# Initialisieren Sie den Wert von num
def __iter__(selbst):
selbst.n = 1
selbst.Ergebnis=0
kehre selbst zurück
# Berechnen Sie die nächste Zahl, die durch 5 teilbar ist
def __nächster__(selbst):
# Überprüfen Sie, ob der Wert von n kleiner oder gleich 5 ist oder nicht
wenn selbst.nein <= 5:
selbst.Ergebnis = selbst.n**2
Zeit.schlafen(0.5)
selbst.n += 1
kehre selbst zurück.Ergebnis
sonst:
StopIteration erhöhen
# Erstellen Sie ein Objekt der Klasse
Objekt = berechne_power()
# Iterierbares Objekt erstellen
iterObject = iter(Objekt)
# Endlosschleife definieren
während Wahr:
Versuchen:
# Gehen Sie zur nächsten Iteration und geben Sie den Quadratwert aus
print("Das Quadrat von %d ist %d" %(iterObject.n,iterObject.__Nächster__()))
außer StopIteration:
print("\nBeendet von der Schleife.")
# Aus der Schleife beenden
Unterbrechung

Ausgabe

Die folgende Ausgabe zeigt, dass der unendliche benutzerdefinierte Iterator beendet wurde, als der Wert von n größer als 5 . wurde. Das Skript berechnete und druckte die Quadratwerte der Zahlenwerte von 1 bis 5.

Iterieren mit itertools

Python hat ein eingebautes Modul namens 'itertools', mit dem ein Iterator zum Iterieren von Daten mithilfe einer Schleife erstellt werden kann. Der nächste Abschnitt dieses Artikels zeigt, wie Sie drei Funktionen in diesem Modul verwenden.

itertools.Anzahl()

Das "itertools".Fortsetzung' Funktion kann mit der 'Karte()'-Methode zum Generieren sequentieller Daten und mit der 'Postleitzahl()'-Methode zum Hinzufügen von Sequenzen mithilfe des count-Parameters dieser Methode. Die Syntax dieser Funktion ist unten angegeben.

Syntax

itertools.count(start=0, step=1)

Hier ist der erste Parameter, 'Start,' wird verwendet, um den Startwert der Sequenz zu definieren, und 0 ist der Standardwert dieses Parameters. Der zweite Parameter, 'Schritt,' wird verwendet, um die Differenz zwischen den fortlaufenden Nummern einzustellen, und 1 ist der Standardwert dieses Parameters.

Beispiel 7: Verwendung von count() Funktion von itertools

Das folgende Skript berechnet die Summe aus 0 zu nein Zahlen, wobei der Wert von nein wird vom Benutzer übernommen. Das 'Anzahl()' Funktion wird importiert von 'itertools' am Anfang des Drehbuchs. Das 'mein_iterator' Objekt wird mit ' initialisiertAnzahl()'Funktion, mit einem 'Start' Wert von 0 und a 'Schritt' Wert von 1. Als nächstes wird die 'sum_result' Variable wird durch den ersten Wert des iterierbaren Objekts initialisiert. Der Startwert wird auf die Variable initialisiert ich und die Startnummer wird als Zeichen in der Variablen gespeichert, Zahlen, die verwendet werden, um andere Zahlen in jeder Iteration zu kombinieren. Die Werte der fortlaufenden Nummern werden in jeder Iteration hinzugefügt, wenn die 'Nächster()' Methode wird aufgerufen. Wenn der Wert von ich wird größer als nein, das Skript wird beendet, indem das Ergebnis der Summe angezeigt wird.

"Das folgende Skript berechnet
die Summe von 0 bis zur Zahl, die als Eingabe verwendet wird.
"
# Importanzahl
aus itertools Importanzahl
# Erstellt ein iterierbares Objekt von count()
my_iterator = count(start=0, step=1)
# Lies den ersten Wert aus dem Iterator
sum_result = next(my_iterator)
# Nehmen Sie eine Zahleneingabe vor, um die unendliche while-Schleife zu beenden
n = int(input("Geben Sie den Grenzwert ein:"))
# Initialisieren Sie den Wert von i und Zahlen
i = sum_result
Zahlen = f'i'
# Endlosschleife deklarieren
während Wahr:
# Füge die Zahl in jeder Iteration hinzu
sum_result += i
i = next(mein_iterator)
# Beende die Schleife, wenn der Wert von i größer als n . ist
if(i > n):
Unterbrechung
# Füge den Zahlenwert als String mit dem '+'-Symbol hinzu
Zahlen += "+" + f'i'
# Drucken Sie den Endwert
print("%s = %d" % (Zahlen, Summe_Ergebnis))

Ausgabe

Die folgende Ausgabe zeigt, dass die Zahl 10 wird als Eingabe verwendet, um die Schleife nach dem Ausführen des Skripts zu beenden. In dieser Ausgabe hat das Skript die Summe von 0 bis 10 berechnet und die Ausgabe gedruckt, 0+1+2+3+4+5+6+7+8+9+10 = 55.

Itertools.Zyklus()

Diese Funktion enthält nur ein Argument, das ein beliebiges Objekt sein kann. Der Zweck dieser Funktion besteht darin, die Werte des Objekts zu wiederholen, nachdem die Iteration aller Werte abgeschlossen ist. Hier Strings, Tupel, Listen usw. kann als Objekt verwendet werden. Die iterierbaren Objektrückgaben dieser Funktion werden verwendet, um jeden Wert des Objekts zu iterieren, der als Argument verwendet wird, indem die 'Nächster()' Methode. Die Anzahl der Iterationen der Werte des iterierbaren Objekts basiert auf der Anzahl der Iterationen der Schleife. Die Syntax dieser Funktion ist unten angegeben.

Syntax

itertools.Zyklus(Objekt)

Beispiel 8: Verwendung von cycle() Funktion von itertools

Das 'zufällig' und 'itertools' Module werden zu Beginn des Skripts importiert, um eine Zufallszahl zu generieren und die 'Zyklus()' Funktion aus der  'itertools' Modul zum Wiederholen der Daten. Als Argument des 'Zyklus()'Funktion. Das iterierbare Objekt namens 'num_liste' wird durch den Rückgabewert dieser Funktion initialisiert. Das 'Anzahl' Variable wird initialisiert auf 0, und wenn der Wert dieser Variablen . wird 6, das 'während' Schleife wird beendet. Also, die 'während' Schleife wird sechsmal durchlaufen und jeder Wert der Liste wird nur einmal wiederholt.

# Zufallsmodul importieren
zufällig importieren
# Itertools-Modul importieren
itertools importieren
# Generiere ein iterierbares Objekt basierend auf der Liste von drei Zufallszahlen
num_list = itertools.Zyklus ([zufällig.randint(1,5),zufällig.Randint(10,50),zufällig.randint
(100.500)] )
# Zähler initialisieren
zählen = 0
# Wiederhole die Schleife 6 Mal
während(zählen != 6):
print('Die aktuelle Zufallszahl ist: ' + f'next(num_list)')
zählen+=1

Ausgabe

Die folgende Ausgabe zeigt, dass drei Zufallszahlen, 3, 17, und 185, wurden als Listenelemente generiert. Die Schleife wird sechsmal wiederholt, und diese drei Werte werden für die nächsten Iterationen wiederholt.

Itertools.wiederholen()

Die Funktion 'repeat()' funktioniert wie ein unendlicher Iterator und kann zwei Argumente annehmen. Wenn das zweite Argument weggelassen wird, arbeitet die Funktion 'repeat()' als unendlicher Iterator und wiederholt den Wert unendlich oft. Diese Funktion belegt nicht bei jeder Wiederholung den Speicher. Es erstellt die Variable nur einmal im Speicher und wiederholt dieselbe Variable unendlich oft, wenn nur ein Argument für diese Funktion festgelegt ist. Die Syntax dieser Funktion ist unten angegeben.

Syntax

itertools.wiederholen(Wert, Grenze)

Das erste Argument wird verwendet, um den Wert zu nehmen, der sich wiederholen wird. Das zweite Argument ist optional und wird verwendet, um das Wiederholungslimit festzulegen.

Beispiel 9: Verwendung der repeat()-Funktion des itertools-Moduls

Das 'itertools'-Modul wird am Anfang des Skripts importiert, um das 'wiederholen()'Funktion. Ein Zeichenfolgenwert wird vom Benutzer zur Wiederholung genommen, und ein Zahlenwert wird vom Benutzer genommen, um das Wiederholungslimit festzulegen. Der Rückgabewert des 'wiederholen()' Funktion wird dann in eine Liste mit dem 'aufführen()'-Methode und gespeichert in der 'listData'variabel. Die Werte der 'listData' wird mit dem 'zum'Schleife.

# Itertools-Modul importieren
itertools importieren
# Nehmen Sie den Eingabewert, der wiederholt wird
string = input("Geben Sie einen String ein:")
# Nehmen Sie den Zahlenwert zum Wiederholen
repeat = int(input("Geben Sie die zu wiederholende Nummer ein:"))
# Verwenden von repeat(), um den String wiederholt in eine Liste einzufügen
listData= list(itertools.wiederholen (Zeichenfolge, wiederholen))
# Initialisieren i
ich = 1
print ("Die Listenwerte sind: \n")
# Iteriere die Liste mit der for-Schleife
für val in listData:
print("Listenelement %d =%s" %(i,val))
ich += 1

Ausgabe

Die folgende Ausgabe zeigt, dass 'Python' wird als Stringwert genommen, und 3 wird als Zahl verwendet, um den Zeichenfolgenwert nach dem Ausführen des Skripts zu wiederholen. Die Ausgabe zeigt, dass die Zeichenfolge 'Python' wird dreimal wiederholt.

Fazit

Das Konzept des Iterators und die Verwendung verschiedener Arten von Iteratoren in Python werden mit den sehr einfachen Beispielen in diesem Artikel erklärt. Python-Benutzer können einen integrierten Iterator verwenden oder ihren benutzerdefinierten Iterator basierend auf der Anforderung erstellen. Dieser Artikel wird den Python-Benutzern helfen, die im Iterator verwendeten Methoden zu kennen und wie diese Methoden mit jeder Schleife funktionieren, um jedes iterierbare Objekt zu lesen. Einige Verwendungen von itertools Python-Module werden in diesem Artikel auch erklärt, um mehr über den Iterator in Python zu erfahren.

Mittlere Maustaste funktioniert nicht unter Windows 10
Das mittlere Maustaste hilft Ihnen beim Scrollen durch lange Webseiten und Bildschirme mit vielen Daten. Wenn das aufhört, werden Sie am Ende die Tast...
So ändern Sie die linke und rechte Maustaste auf einem Windows 10-PC
Es ist ganz normal, dass alle Computer-Maus-Geräte ergonomisch für Rechtshänder gestaltet sind. Es gibt aber auch Mausgeräte, die speziell für Linkshä...
Emulieren Sie Mausklicks, indem Sie den Mauszeiger mit der klicklosen Maus in Windows 10 bewegen
Die Verwendung einer Maus oder Tastatur in der falschen Haltung bei übermäßiger Nutzung kann zu vielen gesundheitlichen Problemen führen, einschließli...