Python

Python xrange vs. rozsah

Python xrange vs. rozsah
Až do verzie Python verzie 2.x, v tomto jazyku sa na generovanie zoznamu celých čísel v poskytnutom rozsahu použili celkovo dve základné metódy. Nižšie sú uvedené dve metódy:

rozsah ()
xrange ()

Vpred s najnovšou verziou Pythonu (od 3 rokov) bol range () stiahnutý a xrange () bol potom zmenený na range (). Teraz v Pythone 3 existuje pre túto metódu iba jedna funkcia, t.e., rozsah (). V Pythone 3 je funkcia range () iba ďalším spôsobom implementácie staršej verzie xrange () pythonu 2.X. Tu uvedieme tieto dva do súvislosti.

Xrange ()

Xrange () sa používa na vytvorenie číselnej postupnosti, ako je funkcia range ().

Syntax

Syntax použitá na definovanie xrange () je:

xrange (začiatok, koniec, krok)

Funkcia slúži na definovanie rozsahu čísel od (je v cene) do konca (nie je v cene).

Parametre

Nasleduje zoznam požadovaných parametrov:

Štart: Východisková pozícia číselnej postupnosti
Koniec: Koncová pozícia číselnej postupnosti
Krok: Rozdiel medzi dvoma po sebe nasledujúcimi číslami v sérii.

Príklady

V nasledujúcom príklade skontrolujeme spôsoby definovania rozsahu xrange.

Tu upresníme iba koncovú pozíciu.

Koncová hodnota je teda nastavená na 5 a potom dostaneme vytlačenú koncovú pozíciu, ako je to znázornené nižšie:

Teraz uvidíme spôsob volania rozsahu, syntax na volanie end bude:

>>> x = xrange (end)

Potom si to necháme vytlačiť.

Dostaneme rozsah na výstupe, ako je uvedené vyššie.

Teraz definujeme počiatočný a koncový bod. Tu je začiatočný bod 2 a konečný bod 5. Potom sme vytlačili začiatočnú a koncovú pozíciu, ako je uvedené nižšie:

Potom budeme vytvárať postupnosť čísel z našich počiatočných a konečných bodov, t.j.e., 2 až 5.

>>> y = xrange (začiatok, koniec)

Na záver sa pozrieme na spôsob definovania počiatočného bodu, kroku a konečného bodu. Keď sme definovali všetky tri parametre; budeme ich nazývať podobným spôsobom ako je uvedené nižšie:

Teraz, aby sme zavolali xrange pre tieto tri parametre, použijeme nasledujúcu syntax:

>>> z = xrange (začiatok, krok, koniec)

Rozsah ()

Range () sa používa na vytvorenie zoznamu a je rýchlejšou funkciou pre viacnásobné iterácie.

Syntax

Používa sa nasledujúca syntax:

>>> rozsah (začiatok, koniec, krok)

Príklady

Pre prvý prípad budeme definovať konečnú hodnotu. Použitá syntax je:

>>> rozsah (koniec)

Takže v príklade uvedenom nižšie budeme ako konečnú hodnotu rozsahu používať hodnotu 3. Keď ho dostaneme vytlačený, vráti hodnoty, s výnimkou konečnej hodnoty.

V nasledujúcom príklade používame príklad popisu počiatočného a cieľového bodu. Hodnota sa začína od 1 a končí sa o 10 (vylúčením). Počiatočný bod je zahrnutý, ale konečný bod je vynechaný. Syntax je podobná tej, ktorá je uvedená nižšie:

>>> rozsah (začiatok, koniec)

Definujeme teda začiatočný bod a potom koncový bod, ktorý je 1, respektíve 10.

Teraz v nasledujúcom príklade budeme mať funkciu step. Funkcia, ktorá definuje medzeru medzi ľubovoľnými dvoma bodmi v postupnosti. Hodnota bude začínať od 0 do 10 (vylúčením). Použitá syntax je uvedená nižšie:

>>> rozsah (začiatok, krok, koniec)

Príklad je uvedený nižšie, kde 2 predstavuje krokovú hodnotu.

Výhody

rozsah ()

Je to rýchlejšie, ak sa iterácie majú robiť viackrát. range () má iba hodnoty celých objektov v reálnom čase. Pokiaľ ide o pamäť, nevykonáva sa dobre.

xrange ()

Musí zakaždým znovu vytvoriť celočíselný objekt. xrange () nie je, pretože nepodporuje metódy rezov a zoznamov. xrange () zaberá rovnaké množstvo pamäte. Čo sa teda týka výkonu, najmä keď používatelia iterujú s väčšou hodnotou rozsahu, výkon xrange () je oveľa lepší.

Podobnosti medzi rozsahom a rozsahom Python 2 a Python 3

Xrange Pythonu 2 má popisné znázornenie vo forme reťazca, ktoré je veľmi podobné hodnote rozsahu objektu Pythonu 3.

Hodnota xrange () v Pythone 2 je iterovateľná, preto je rang () v Pythone 3.

xrange () a range () majú hodnoty kroku, konca a začiatočného bodu. V obidvoch prípadoch je krok voliteľným poľom, rovnako tak je to aj s počiatočnou hodnotou.

Obidva rozsahy Pythonu 2 a 3 podporujú dĺžku, ktorú je možné indexovať v poradí dopredu alebo dozadu. Tu je príklad toho istého:

Rozdiely medzi rozsahom () a rozsahom ()

Pretože funkcia xrange () vyhodnocuje iba objekt generátora s hodnotami potrebnými na lenivé vyhodnotenie, je rýchlejšie ju implementovať v rozsahu (). range () pomáha vrátiť zoznam a obsahuje všetky objekty, ktoré je možné použiť, zatiaľ čo xrange () vracia objekty spojené so zoznamom a nemožno ich na ne použiť, aby sme ho mohli považovať za nevýhodu.

Premenná použitá vo funkcii range () ukladá hodnotu rozsahu a zaberá tak veľa pamäte v porovnaní s xrange (), ktorá kvôli premenným zaberá iba časť pamäte. range () vráti objekt rozsahu, zatiaľ čo xrange () vráti objekt generátora.

Funkcia range (1, 7, 2) vráti výstup [1, 3, 5] a vstupný rozsah (1, 7, 2) vyprodukuje výstup [1, 3, 5]. Takto môžeme predpokladať, že majú podobný vzor.

Záver

rozsah () a xrange () majú rôzne vlastnosti, ako je uvedené vyššie. Všetky porovnania uvedené v tomto tutoriále spolu s príkladmi pomôžu čitateľom lepšie si zvoliť preferovanú metódu na základe svojich požiadaviek.

Ako používať funkciu mmap v jazyku C?
The mmap () Táto funkcia sa používa na mapovanie medzi adresným priestorom procesu a súbormi alebo zariadeniami. Keď je súbor namapovaný na adresný pr...
Ako používať inotify API v jazyku C
Inotify je Linux API používané na monitorovanie udalostí súborového systému. Tento článok vám ukáže, ako sa Inotify používa na sledovanie vytvárania, ...
Ako používať funkciu gettimeofday v jazyku C?
The gettimeofday () Táto funkcia získa čas systému. Aktuálny čas je vyjadrený v uplynulých sekundách a mikrosekundách od 00:00:00, 1. januára 1970 (Un...