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.
gast03
User
Beiträge: 1
Registriert: Dienstag 10. Juli 2007, 15:14

Elemente aus Liste löschen

Beitragvon gast03 » Dienstag 10. Juli 2007, 15:20

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

Beitragvon Zap » Dienstag 10. Juli 2007, 16:22

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

Beitragvon BlackJack » Dienstag 10. Juli 2007, 17:42

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:

Beitragvon htw7448 » Mittwoch 11. Juli 2007, 13:19

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]

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot], redone