Seite 1 von 1

Elemente aus Liste löschen

Verfasst: Dienstag 10. Juli 2007, 15:20
von gast03
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

Verfasst: Dienstag 10. Juli 2007, 16:22
von Zap
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!

Verfasst: Dienstag 10. Juli 2007, 17:42
von 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

Verfasst: Mittwoch 11. Juli 2007, 13:19
von htw7448
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]