Elemente aus Liste löschen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
gast03
User
Beiträge: 1
Registriert: Dienstag 10. Juli 2007, 15:14

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
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

Hm, abstrakt und detailiert zugleich :?
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]
>>>
Wenn sich das ganze für mehrere Listen wiederholt musst du
dich bezüglich for-Schleifen informieren.

Viel Erfolg!
BlackJack

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
htw7448
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]
Antworten