„Python“ unikalus sąrašas - kaip gauti visas unikalias sąrašo ar masyvo vertes

Tarkime, kad turite sąrašą, kuriame yra pasikartojantys numeriai:

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

Bet jūs norite unikalių skaičių sąrašo .

unique_numbers = [1, 2, 3, 4] 

Yra keli būdai, kaip gauti unikalių „Python“ reikšmių sąrašą. Šis straipsnis parodys, kaip tai padaryti.

1 variantas - rinkinio naudojimas norint gauti unikalių elementų

Naudodami setvieną būdą tai padaryti. Rinkinys yra naudingas, nes jame yra unikalių elementų.

Norėdami gauti unikalius elementus, galite naudoti rinkinį. Tada paverskite rinkinį į sąrašą.

Pažvelkime į du metodus, kuriuose naudojamas rinkinys ir sąrašas. Pirmasis požiūris yra išsamus, tačiau naudinga pamatyti, kas vyksta kiekviename žingsnyje.

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] 

Pažvelkime atidžiau į tai, kas vyksta. Man pateikiamas skaičių sąrašas numbers,. Perduodu šį sąrašą į funkciją get_unique_numbers,.

Funkcijos viduje sukuriu tuščią sąrašą, kuriame galiausiai bus visi unikalūs skaičiai. Tada naudoju a, setnorėdamas gauti unikalius numerius iš numberssąrašo.

unique_numbers = set(numbers) 

Aš turiu tai, ko man reikia: unikalius skaičius. Dabar man reikia įtraukti šias vertes į sąrašą. Norėdami tai padaryti, aš naudoju „for loop“, norėdamas pakartoti kiekvieną rinkinio skaičių.

for number in unique_numbers: list_of_unique_numbers.append(number) 

Kiekvienoje iteracijoje į sąrašą įtraukiu dabartinį numerį list_of_unique_numbers,. Galiausiai grąžinu šį sąrašą programos pabaigoje.

Yra trumpesnis būdas rinkinį ir sąrašą naudoti norint gauti unikalias „Python“ reikšmes. Tai mes spręsime toliau.

Trumpesnis požiūris su rinkiniu

Visą aukščiau pateiktame pavyzdyje parašytą kodą galima sutelkti į vieną eilutę naudojant „Python“ integruotas funkcijas.

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

Nors šis kodas atrodo labai kitoks nei pirmasis pavyzdys, idėja yra ta pati. Norėdami gauti unikalius skaičius, naudokite rinkinį. Tada paverskite rinkinį į sąrašą.

unique_numbers = list(set(numbers)) 

Skaityti aukščiau pateiktą kodą naudinga pagalvoti „iš vidaus“. Slaptasis kodas gauna įvertino Pirma: set(numbers). Tada atokiausiuose kodas įvertino: list(set(numbers)).

2 variantas - naudojant iteraciją nustatant unikalias vertes

Kartojimas yra dar vienas požiūris, į kurį reikia atsižvelgti.

Pagrindinė mintis yra sukurti tuščią sąrašą, kuriame bus unikalūs skaičiai. Tada naudokite ciklo kartojimą kiekvienam nurodyto sąrašo skaičiui. Jei numeris jau yra unikaliame sąraše, eikite į kitą kartojimą. Kitu atveju prie jo pridėkite numerį.

Pažvelkime į du būdus, kaip naudoti iteraciją, kad gautumėte unikalias reikšmes sąraše, pradedant nuo išsamesnės.

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] 

Štai kas vyksta kiekviename žingsnyje. Pirma, man pateikiamas skaičių sąrašas numbers,. Perduodu šį sąrašą į savo funkciją get_unique_numbers,.

Funkcijos viduje sukuriu tuščią sąrašą unique,. Galų gale šiame sąraše bus visi unikalūs numeriai.

Aš naudoju „for loop“, norėdamas pakartoti kiekvieną numberssąrašo skaičių.

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

Sąlyginis ciklo viduje patikrina, ar dabartinės iteracijos skaičius yra uniquesąraše. Jei taip, ciklas tęsiasi kitame kartojime. Kitu atveju skaičius bus įtrauktas į šį sąrašą.

Čia yra svarbus dalykas: pridedami tik unikalūs skaičiai. Kai ciklas bus baigtas, aš grįšiu, uniquekuriame yra visi unikalūs skaičiai.

Trumpesnis požiūris su kartojimu

Yra dar vienas būdas parašyti funkciją mažiau eilučių.

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] 

Skirtumas yra sąlyginis. Šį kartą jis nustatytas taip skaityti: jei numerio nėra unique, tada pridėkite jį.

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

Priešingu atveju kilpa pereis prie kito sąrašo skaičiaus numbers,.

Rezultatas tas pats. Tačiau kartais sunkiau galvoti ir skaityti kodą, kai loginė reikšmė yra paneigiama.

Yra ir kitų būdų, kaip rasti unikalias reikšmes „Python“ sąraše. Bet tikriausiai rasite sau vieną iš šiame straipsnyje aprašytų būdų.

Apie mokymąsi programuoti ir geriausius būdus tai rašau amymhaddad.com. Sekite mane „Twitter“: @amymhaddad.