Pythonin ainutlaatuinen luettelo - Kuinka saada kaikki luettelon tai taulukon ainutlaatuiset arvot

Oletetaan, että sinulla on luettelo, joka sisältää päällekkäisiä numeroita:

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

Mutta haluat luettelon yksilöllisistä numeroista.

unique_numbers = [1, 2, 3, 4] 

On olemassa muutama tapa saada luettelo ainutlaatuisista arvoista Pythonissa. Tämä artikkeli näyttää, miten.

Vaihtoehto 1 - Sarjan käyttäminen ainutlaatuisten elementtien saamiseksi

Käyttämällä setyksi tapa edetä asiassa. Sarja on hyödyllinen, koska se sisältää ainutlaatuisia elementtejä.

Voit käyttää sarjaa saadaksesi ainutlaatuiset elementit. Muuta sitten sarja luetteloksi.

Tarkastellaan kahta lähestymistapaa, joissa käytetään joukkoa ja luetteloa. Ensimmäinen lähestymistapa on yksityiskohtainen, mutta on hyödyllistä nähdä, mitä tapahtuu jokaisessa vaiheessa.

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] 

Katsotaanpa tarkemmin mitä tapahtuu. Olen antanut listan numeroita, numbers. Kuljen tämän luettelon toiminto, get_unique_numbers.

Funktion sisällä luon tyhjän luettelon, joka lopulta pitää sisällään kaikki yksilölliset numerot. Sitten käytän a-näppäintä setsaadaksesi yksilölliset numerot numbersluettelosta.

unique_numbers = set(numbers) 

Minulla on mitä tarvitsen: yksilölliset numerot. Nyt minun on saatettava nämä arvot luetteloon. Tätä varten käytän a for -silmukkaa iteroimaan sarjan kaikki numerot.

for number in unique_numbers: list_of_unique_numbers.append(number) 

Jokaisena iteraation lisään nykyinen määrä listalle list_of_unique_numbers. Palaan lopuksi luetteloon ohjelman lopussa.

On lyhyempi tapa käyttää joukkoa ja luetteloa ainutlaatuisten arvojen saamiseksi Pythonissa. Sitä käsittelemme seuraavaksi.

Lyhyempi lähestymistapa asetettu

Kaikki yllä olevassa esimerkissä kirjoitettu koodi voidaan tiivistää yhdeksi riviksi Pythonin sisäisten toimintojen avulla.

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

Vaikka tämä koodi näyttää hyvin erilaiselta kuin ensimmäinen esimerkki, idea on sama. Käytä joukkoa saadaksesi yksilölliset numerot. Muuta sitten sarja luetteloksi.

unique_numbers = list(set(numbers)) 

On hyödyllistä ajatella "ylösalaisin" lukiessasi yllä olevaa koodia. Sisin koodi saa arvioitiin ensin: set(numbers). Sitten uloin koodi arvioidaan: list(set(numbers)).

Vaihtoehto 2 - Iteraation käyttäminen yksilöllisten arvojen tunnistamiseen

Iteraatio on toinen harkittava lähestymistapa.

Pääajatuksena on luoda tyhjä luettelo, johon mahtuu yksilölliset numerot. Käytä sitten silmukka-iterointia jokaisen annetun luettelon numeron yli. Jos numero on jo ainutlaatuisessa luettelossa, jatka seuraavaan iterointiin. Muussa tapauksessa lisää numero siihen.

Katsotaan kahta tapaa käyttää iteraatiota yksilöllisten arvojen saamiseksi luetteloon, aloittaen tarkemmasta arvosta.

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] 

Näin tapahtuu joka askeleella. Ensinnäkin olen antanut listan numeroita, numbers. Kuljen tämän luettelon minun toiminnon get_unique_numbers.

Funktion sisällä luon tyhjän luettelon unique. Lopulta tämä luettelo sisältää kaikki yksilölliset numerot.

Käytän for for -silmukkaa toistamaan numbersluettelon jokaisen numeron .

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

Silmukan sisällä oleva ehdollinen tarkistaa, onko nykyisen iteraation numero uniqueluettelossa. Jos näin on, silmukka jatkuu seuraavaan iterointiin. Muussa tapauksessa numero lisätään tähän luetteloon.

Tässä on tärkeä asia: vain yksilölliset numerot lisätään. Kun silmukka on valmis, palaan, uniquejoka sisältää kaikki yksilölliset numerot.

Lyhyempi lähestymistapa iteraatiolla

On toinen tapa kirjoittaa funktio vähemmän riveihin.

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] 

Ero on ehdollinen. Tällä kertaa se on määritetty lukemaan näin: jos numeroa ei ole unique, lisää se.

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

Muuten silmukka liikkuu mukana seuraavaan numeroon luettelossa, numbers.

Tulos on sama. Joskus on kuitenkin vaikeampaa ajatella ja lukea koodia, kun totuusarvo on kumottu.

On muitakin tapoja löytää yksilöllisiä arvoja Python-luettelosta. Mutta luultavasti löydät itsesi tavoittelemaan yhtä tässä artikkelissa käsitellyistä lähestymistavoista.

Kirjoitan ohjelmoinnin oppimisesta ja parhaista tavoista edetä siinä osoitteessa amymhaddad.com. Seuraa minua Twitterissä: @amymhaddad.