Seite 1 von 1

Liste in Menge

Verfasst: Dienstag 15. April 2014, 13:10
von duodiscus
Ich habe eine Liste erzeugt und möchte diese gerne in eine Menge überführen

meine liste ist: L = [ ] 
und wird mit zufallszahlen gefüllt.

diese möchte ich nun in einer Menge überführen. Wie geht das mit 'set()'?

Danach möchte ich in der Menge eine Überprüfung anstellen, z.B.: ob Werte zwischen 1. und 10 darin enthalten sind.
Kann mir da jemand weiterhelfen?

Re: Liste in Menge

Verfasst: Dienstag 15. April 2014, 13:58
von Sirius3
@duodiscus: set(L); Mengen sind nicht dafür geeignet, nach Bereichen zu filtern.

Re: Liste in Menge

Verfasst: Dienstag 15. April 2014, 14:10
von /me
Eventuell suchst du any.

Code: Alles auswählen

>>> import random
>>> data = [random.randint(1, 20) for _ in range(10)]
>>> print any(True for value in data if 1 < value < 10)
True

Re: Liste in Menge

Verfasst: Dienstag 15. April 2014, 14:49
von EyDu

Code: Alles auswählen

any(1 < value < 10 for value in data)
;-)

Re: Liste in Menge

Verfasst: Dienstag 15. April 2014, 16:24
von duodiscus
Hmm, also kann ich die Listeninhalte nicht einfach in eine Menge überführen?

Code: Alles auswählen

import random

def f():
    L = [ ]
    
    for i in range(1,1001):
        i = random.randrange(1, 101)
        L.append(i)
        
    return(L)
Und das soll jetzt von der Liste in eine Menge.

Re: Liste in Menge

Verfasst: Dienstag 15. April 2014, 17:19
von BlackJack
@duodiscus: Wie das geht hat Sirius3 doch schon gezeigt.

Edit: Du solltest Dir übrigens gar nicht erst angewöhnen so schlechte, weil nichtssagende Namen zu verwenden. Und nicht den selben Namen für verschiedene Dinge im gleichen Kontext verwenden. Das `i` sollte entweder als Laufvariable verwendet werden oder für ganze Zufallszahlen, aber nicht für beides in der selben Schleife. Das ist verwirrend.

Edit:

Code: Alles auswählen

from random import randint


def create_random_numbers(count, min_value, max_value):
    return [randint(min_value, max_value) for _ in xrange(count)]


def main():
    random_numbers = create_random_numbers(1000, 1, 100)
    random_numbers_without_duplicates = set(random_numbers)
    print random_numbers_without_duplicates


if __name__ == '__main__':
    main()
Bei der Gelegenheit kannst Du dann gleich mal ausrechnen wie (un)wahrscheinlich es ist, dass bei *den* Eingabezahlen kein `set` mit allen 100 möglichen Werten heraus kommt.