Hallo,
ich bin neu in der Programmierung.
ich habe eine Liste und möchte die Liste verkleinern, d. h. ich möchte immer drei Werte löschen, dann den vierten in eine neue Liste schreiben, dann Wert 5-7 Löschen und den 8. Wert wieder in die neue Liste mit einfügen.
Dann möchte in einer anderen Liste immer 4 Werte addieren, und in eine neue liste schreiben, dann die nächsten 4 Werte addieren und in die neue liste einfügen.
kann mir jemand hierzu ein Beispiel zeigen?
Vielen Dank
Gruß Tobias
Elemente aus Liste löschen
Hm, abstrakt und detailiert zugleich
Kein komplettes Beispiel aber eine kleine Kurzinfo was man so machen kann:
Wenn sich das ganze für mehrere Listen wiederholt musst du
dich bezüglich for-Schleifen informieren.
Viel Erfolg!
Kein komplettes Beispiel aber eine kleine Kurzinfo was man so machen kann:
Code: Alles auswählen
>>> numbers = [1,2,3,4,5]
>>> del numbers[0:3] # weg mit den ersten 3
>>> numbers
[4, 5]
>>> new_list = []
>>> new_list.append(numbers[0]) # erste Element in neue Liste kopieren
>>> new_list
[4]
>>> numbers
[4, 5]
>>> numbers.insert(1,100) # an Position 1 ein 100 einfuegen
>>> numbers
[4, 100, 5]
>>> new_list.append(numbers[1] + numbers[2]) # Werte an Position 1 und 2 addieren und an neue Liste anhaengen
>>> new_list
[4, 105]
>>>
dich bezüglich for-Schleifen informieren.
Viel Erfolg!
Das erste ist einfach und lässt sich mit der Schrittweite bei der Slice-Syntax lösen. Für das addieren braucht's etwas mehr Quelltext.
Code: Alles auswählen
from itertools import islice
def chunk_adder(iterable, count):
iterator = iter(iterable)
while True:
chunk = list(islice(iterator, count))
if not chunk:
break
yield sum(chunk)
def main():
a = range(20)
print a
b = a[::4]
print b
c = list(chunk_adder(a, 4))
print c
b.extend(c)
print b
-
- User
- Beiträge: 51
- Registriert: Montag 16. April 2007, 10:59
- Wohnort: Messel(Hessen)
- Kontaktdaten:
ich wollte das ganze mit List comprehensions machen. Folgendes ist dabei herausgekommen:
Code: Alles auswählen
from itertools import count,izip
def filter(liste, x):
newlist = [wert for counter, wert in izip(count(1), liste) if counter%x == 0 or (counter-1) == 0]
oldlist = [wert for counter, wert in izip(count(1), liste) if counter%x != 0]
return [oldlist, newlist]
elem = range(20)
liste = [i for i in elem] #Testliste
x = 3 #testcounter
filter1 = filter(liste, x)
print 'korrigierte Liste :', filter1[0]
print 'geloeschte Zahlen :', filter1[1]