Python egyedi lista - Hogyan lehet elérni az összes egyedi értéket egy listában vagy tömbben

Tegyük fel, hogy van egy lista, amely ismétlődő számokat tartalmaz:

numbers = [1, 1, 2, 3, 3, 4] 

De szeretne egy egyedi számot felsorolni .

unique_numbers = [1, 2, 3, 4] 

Néhány módszer van az egyedi értékek listájának megszerzésére a Pythonban. Ez a cikk megmutatja, hogyan.

1. lehetőség - egy készlet használata az egyedi elemek megszerzéséhez

Egy setegyik módja annak, hogy kezdjen hozzá. A készlet azért hasznos, mert egyedi elemeket tartalmaz.

Használhat egy készletet az egyedi elemek megszerzéséhez. Ezután fordítsa a készletet listává.

Nézzünk két megközelítést, amelyek halmazt és listát használnak. Az első megközelítés részletes, de hasznos megnézni, mi történik az egyes lépésekben.

numbers = [1, 2, 2, 3, 3, 4, 5] def get_unique_numbers(numbers): list_of_unique_numbers = [] unique_numbers = set(numbers) for number in unique_numbers: list_of_unique_numbers.append(number) return list_of_unique_numbers print(get_unique_numbers(numbers)) # result: [1, 2, 3, 4, 5] 

Vizsgáljuk meg közelebbről, mi történik. Én egy listát a számok, numbers. Én át ezt a listát a funkció get_unique_numbers.

A függvényen belül létrehozok egy üres listát, amely végül az összes egyedi számot tartalmazza. Ezután a-t használom setaz egyedi számok lekéréséhez a numberslistából.

unique_numbers = set(numbers) 

Megvan, amire szükségem van: az egyedi számok. Most ezeket az értékeket fel kell vennem egy listára. Ehhez egy for for ciklust használok a halmaz minden számának átismételésére.

for number in unique_numbers: list_of_unique_numbers.append(number) 

Minden iteráció adhatok az aktuális számot a listán, list_of_unique_numbers. Végül visszaadom ezt a listát a program végén.

Van egy rövidebb módszer egy halmaz és lista használatára az egyedi értékek megszerzéséhez a Pythonban. Ezt fogjuk megoldani legközelebb.

Rövidebb megközelítés szettel

A fenti példában írt összes kód egy sorba sűríthető a Python beépített függvényeinek segítségével.

numbers = [1, 2, 2, 3, 3, 4, 5] unique_numbers = list(set(numbers)) print(unique_numbers) # Result: [1, 2, 3, 4, 5] 

Bár ez a kód nagyon különbözik az első példától, az ötlet ugyanaz. Használjon egy készletet az egyedi számok megszerzéséhez. Ezután fordítsa a készletet listává.

unique_numbers = list(set(numbers)) 

Hasznos a „kifelé” gondolkodni, amikor elolvassa a fenti kódot. A legbelső kód kerül először értékelni: set(numbers). Ezután a legkülső kód értékeljük: list(set(numbers)).

2. lehetőség - Iteráció használata az egyedi értékek azonosításához

Az iteráció egy másik megfontolandó megközelítés.

A fő ötlet egy üres lista létrehozása, amely egyedi számokat tartalmaz. Ezután a ciklus iterálásához használja az adott lista minden egyes számát. Ha a szám már szerepel az egyedi listában, folytassa a következő iterációval. Ellenkező esetben adja hozzá a számot.

Nézzünk meg kétféle módszert az iteráció használatára az egyedi értékek felsorolásához, kezdve a részletesebbel.

numbers = [20, 20, 30, 30, 40] def get_unique_numbers(numbers): unique = [] for number in numbers: if number in unique: continue else: unique.append(number) return unique print(get_unique_numbers(numbers)) # Result: [20, 30, 40] 

Így történik az út minden egyes lépése. Először is, én egy listát a számok, numbers. Én át ezt a listát az én funkciót get_unique_numbers.

Bent a funkció, hozok létre egy üres listát, unique. Végül ez a lista tartalmazza az összes egyedi számot.

A for ciklust használom a numberslista minden egyes számának átismételésére .

 for number in numbers: if number in unique: continue else: unique.append(number) 

A cikluson belüli feltételes ellenőrzi, hogy az aktuális iteráció száma szerepel-e a uniquelistában. Ha igen, akkor a ciklus folytatódik a következő iterációig. Ellenkező esetben a szám hozzáadódik ehhez a listához.

Itt van a fontos pont: csak az egyedi számokat adjuk hozzá. Miután a ciklus elkészült, visszatérek, uniqueamely tartalmazza az összes egyedi számot.

Rövidebb megközelítés az iterációval

Van egy másik módja annak, hogy a függvényt kevesebb sorba írjuk.

numbers = [20, 20, 30, 30, 40] def get_unique_numbers(numbers): unique = [] for number in numbers: if number not in unique: unique.append(number) return unique #Result: [20, 30, 40] 

The difference is the conditional. This time it’s set up to read like this: if the number is not in unique, then add it.

if number not in unique: unique.append(number) 

Otherwise, the loop will move along to the next number in the list, numbers.

The result is the same. However, it’s sometimes harder to think about and read code when the boolean is negated.

There are other ways to find unique values in a Python list. But you’ll probably find yourself reaching for one of the approaches covered in this article.

I write about learning to program, and the best ways to go about it on amymhaddad.com. Follow me on Twitter: @amymhaddad.