Python range() Fonksiyonu: Float, List, For döngüsü Örnekleri

⚡ Akıllı Özet

Python `range()` fonksiyonu, başlangıç ​​değerinden bitiş değerine kadar (bitiş değeri dahil değil) değişmez bir tamsayı dizisi üreten ve artışı kontrol etmek için isteğe bağlı bir `step` parametresi kullanan yerleşik bir fonksiyondur.

  • 🔘 Sözdizimi: `range(start, stop, step)` fonksiyonu en fazla üç tamsayı argümanı kabul eder; burada `start` varsayılan olarak 0, `step` ise varsayılan olarak 1'dir.
  • ☑️ Özel durak: Dizi her zaman durdurma indeksinden bir değer önce durur, bu nedenle range(5) 0 ile 4 arasında değerler verir.
  • Adım kontrolü: Pozitif bir adım değerleri artırırken, negatif bir adım ters yönde bir aralık için geriye doğru sayar.
  • 🧪 Tür sınırlamaları: Yalnızca tamsayılar kabul edilir, bu nedenle ondalık sayı veya dize argümanları TypeError hatası verir.
  • NumPy kayan noktalı sayılar: NumPy'nin arange() fonksiyonu, range() fonksiyonunun davranışını kayan noktalı sayı dizilerine genişletir.
  • 🤖 Yapay zeka iş akışları: Makine öğrenimi kodu, eğitim dönemlerini, mini grupları ve hiperparametre ızgaralarını yinelemek için `range()` fonksiyonuna dayanır.

Python aralık() İşlev

Nedir? Python Menzil?

Python range(), aşağıdakilerle kullanılabilen yerleşik bir işlevdir: Python itibaren Python (3.x) ve verilen başlangıç ​​ve bitiş indeksine göre bir sayı dizisi verir. Başlangıç ​​indeksi verilmediği takdirde, indeks 0 olarak kabul edilir ve bitiş indeksine kadar değeri 1 artırır.

Örneğin, range(5) 0, 1, 2, 3, 4 değerlerini çıktı olarak verecektir. Python `range()` komutu çok kullanışlıdır ve çoğunlukla bir döngü kullanarak yineleme yapmanız gerektiğinde kullanılır. döngü için.

Sözdizimi

`range()` fonksiyonunun sözdizimi aşağıda gösterilmiştir:

range(start, stop, step)

Parametreler

  • başlatın: (isteğe bağlı) Başlangıç ​​dizini bir tamsayıdır ve belirtilmezse varsayılan değer 0'dır.
  • durdurmak: Durdurma indeksi, aralık fonksiyonunun durması gereken değeri belirler. Aralık fonksiyonuna girilmesi zorunlu bir değerdir. Son değer her zaman durdurma değerinden 1 eksik olacaktır.
  • adım: (İsteğe bağlı) Adım değeri, aralıktaki bir sonraki sayının artırılacağı sayıdır; varsayılan olarak 1'dir.

Geri dönüş değeri

Dönüş değeri, verilen başlangıçtan bitiş dizinine kadar olan bir sayı dizisidir.

Python range() İşlev ve tarihçe

Python range()'dan tanıtıldı Python Sürüm 3; öncesinde xrange() fonksiyonu kullanılıyordu.

Hem `range()` hem de `xrange()` fonksiyonları sayı dizisi üretmek için kullanılır.

Aşağıda `range()` ve `xrange()` fonksiyonları arasındaki farklar verilmiştir:

Aralık() xaralık()
range(), sayıların sırasını verir ve sayıların bir listesini döndürür. xrange() fonksiyonu, değerleri almak için for döngüsünde döndürülmesi gereken bir üreteç nesnesi verir.
range() bir liste döndürür. xrange() bir üreteç nesnesi döndürür.
range() yöntemi, döndürülen listenin xrange() yöntemine kıyasla saklanması gerektiğinden daha fazla bellek kullanır. xrange() bir jeneratör nesnesi döndürdüğü için değerleri anında vermez ve değerleri almak için bir for döngüsü içinde kullanılmalıdır.
Büyük veri kümeleriyle çalışırken bellek kullanımı daha fazla olur, dolayısıyla kod yürütme hızı yavaşlar. Kod yürütme xrange() kullanılarak daha hızlıdır.

range() kullanımı

Bu örnek, range() kullanılarak 0-9 arası değerlerin nasıl yazdırılacağını gösterir.

Aralıkta kullanılan değer 10 olduğundan, çıktı 0 1 2 3 4 5 6 7 8 9 olur.

Başlangıç ​​değeri verilmediği için başlangıç ​​0 olarak kabul edilir ve son değer 9'a kadar verilir. Son değer her zaman verilen değerden 1 eksiktir, yani stop-1.

for i in range(10):
    print(i, end =" ")

Çıktı:

0 1 2 3 4 5 6 7 8 9

Range() içinde başlatma ve durdurmayı kullanma

Kodda başlangıç ​​değeri 3, bitiş değeri ise 10'dur. Burada başlangıç ​​indeksi 3 olduğundan, sayı dizisi 3'ten başlayıp bitiş değerine kadar devam edecektir. Dizideki son değer, bitiş değerinden 1 eksik olacaktır, yani 10-1 = 9.

for i in range(3, 10):
    print(i, end =" ")

Çıktı:

3 4 5 6 7 8 9

Başlat, durdur ve adımı kullanma

Başlangıç ​​değeri 3'tür, bu nedenle sayı dizisi 3'ten başlayacaktır. Bitiş değeri 10'dur, bu nedenle sayı dizisi (10-1), yani 9'da duracaktır. Adım değeri 2'dir, bu nedenle dizideki her değer 2 artırılacaktır. Adım değeri verilmezse, adım değeri varsayılan olarak 1 olur.

for i in range(3, 10, 2):
    print(i, end =" ")

Çıktı:

3 5 7 9

Şimdiye kadar, range() fonksiyonunun verilen durdurma değeri için artırılmış değeri nasıl verdiğini gördük. Şimdi de verilen aralıkta azaltılmış değeri elde etmek için bir örnek deneyelim.

Aralıktaki değerleri pozitif bir adım kullanarak artırma

`range()` fonksiyonundaki `step` parametresi, değerleri artırmak veya azaltmak için kullanılabilir. Varsayılan olarak pozitif bir değer olan 1'dir. Bu nedenle her zaman artırılmış değerler verecektir.

Artan değerler çıktısı almak istiyorsanız, adım değerinin pozitif olması gerekir.

for i in range(1, 30, 5):
    print(i, end =" ")

Çıktı:

1 6 11 16 21 26

Reverse Aralık: Negatif adım kullanarak değerleri azaltma

`range()` fonksiyonunda negatif bir değerle kullanılan `step` parametresi, azalan değerler elde etmek için kullanılabilir. Aşağıdaki örnekte, `step` değeri negatiftir, bu nedenle çıktı, verilen `range` değerinden azalarak elde edilecektir.

for i in range(15, 5, -1):
    print(i, end =" ")

Çıktı:

15 14 13 12 11 10 9 8 7 6

Başlangıç ​​değeri 15, bitiş değeri 5 ve adım değeri negatif bir sayı, yani -1'dir. Yukarıdaki girdilerle, range() fonksiyonu 15'ten başlayarak bitiş değerine ulaşana kadar değeri azaltacaktır, ancak buradaki fark, son değerin stop + 1 olmasıdır.

Yüzen sayıların kullanımı Python Aralık()

Şimdi kayan noktalı sayıları kullanarak range() üzerinde çalışalım.

Örnek:

for i in range(10.5):
    print(i, end =" ")

Yukarıdaki örnekte, durdurma değeri olarak 10.5'i kullandık.

Çıktı:

Traceback (most recent call last):
  File "python_range.py", line 1, in <module>
    for i in range(10.5):
TypeError: 'float' object cannot be interpreted as an integer

Python `range()` fonksiyonu `start`, `stop` ve `step` değerleri için ondalık sayıları desteklemediğinden hata verir.

for döngüsünün kullanılması Python Aralık()

Bu örnekte, bir sayı dizisi kullanacağız ve range() fonksiyonunu kullanarak bir for döngüsü içinde diziyi nasıl yineleyeceğimizi göreceğiz.

Örnek:

arr_list = ['Mysql', 'Mongodb', 'PostgreSQL', 'Firebase']

for i in range(len(arr_list)):
    print(arr_list[i], end =" ")

Çıktı:

MysqlMongodb PostgreSQL Firebase

Yukarıdaki örnekte, durdurma değeri olarak len(arr_list) kullandık. For döngüsü, durdurma değerine, yani dizinin uzunluğuna kadar devam edecektir; bu da arr_list'te dört öğe olduğu için 4 olacaktır. Başlangıç ​​değeri 0 ve adım 1 olacaktır, bu nedenle değerler 0'dan başlayacak ve 3'te, yani dizinin uzunluğu - 1'de duracaktır; bu da 4 - 1 = 3 anlamına gelir.

kullanma Python range() bir liste olarak

Bu örnekte range çıktısının bir liste halinde nasıl kullanılacağını göreceğiz.

Örnek:

print(list(range(10)))

Çıktı:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Çıktının bir liste formatı olduğunu görebilirsiniz. range() işlevini döngüye almak gerekli değildi ve list() yöntemini kullanarak çıktıyı doğrudan aralıktan liste biçimine dönüştürebildik.

Python aralığındaki karakterleri kullanma()

Şu ana kadar python range()'da tamsayıları kullandık. Python aralığında kayan noktalı sayıların desteklenmediğini de gördük. Karakterleri kullandığımızda ne olacağına dair çıktıyı deneyelim ve görelim.

Örnek:

for c in range ('z'):
        print(c, end =" ")

Çıktı:

Traceback (most recent call last):
  File "python_range.py", line 1, in <module>
    for c in range ('z'):
TypeError: 'str' object cannot be interpreted as an integer

Bir dizenin tam sayı olarak yorumlanamayacağını söyleyen bir hata veriyor.

Alfabelerin listesini almak için kodu özelleştirebilir ve aşağıda gösterildiği gibi istediğiniz çıktıyı alabilirsiniz:

Örnek:

def get_alphabets(startletter, stopletter, step):
    for c in range(ord(startletter.lower()), ord(stopletter.lower()), step):
        yield chr(c)

print(list(get_alphabets("a", "h", 1)))

Çıktı:

['a', 'b', 'c', 'd', 'e', 'f', 'g']

Menzil Öğelerine Nasıl Erişilir

Aralıktan değerleri almak için for döngüsünden yararlanabilir veya range() öğesinden öğelere erişmek için dizini kullanabilirsiniz.

For döngüsünü kullanma

Örnek:

for i in range(6):
    print(i)

Çıktı:

0
1
2
3
4
5

Dizini kullanma

İndeks, o konumda mevcut olan değeri elde etmek için range ile birlikte kullanılır. Aralık değeri 5 ise, başlangıç ​​değerini elde etmek için aralık(5)[0] ve sonraki değer aralığı(5)[1] vb.'yi kullanabilirsiniz.

Örnek:

startvalue = range(5)[0] 
print("The first element in range is = ", startvalue) 

secondvalue = range(5)[1] 
print("The second element in range is = ", secondvalue) 

lastvalue = range(5)[-1]
print("The first element in range is = ", lastvalue)

Çıktı:

The first element in range is =  0
The second element in range is =  1
The first element in range is =  4

list()'i kullanma

Bu yöntem range()'daki tüm öğeleri yazdıracaktır. list() işlevini kullanarak range() öğesindeki öğeleri liste biçiminde döndürür.

Örnek:

print(list(range(10)))

Çıktı:

 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Verilen aralık için liste çıktısını verir.

Örnek: range() işlevini kullanarak çift sayıları elde edin

`range()` fonksiyonu, girdi olarak verilen aralıktaki çift sayıların listesini alır. `range()` fonksiyonunun parametreleri şunlardır: `start` 2, `stop` 20 ve `step` 2; bu nedenle değerler 2 artırılacak ve `stop-2`'ye kadar çift sayılar verecektir.

Örnek:

for i in range(2, 20, 2):
    print(i, end =" ")

Çıktı:

2 4 6 8 10 12 14 16 18

İki aralıklı () çıktıların birleştirilmesi

Bu örnekte, itertools modülünün chain() fonksiyonu yardımıyla 2 adet range() fonksiyonunu birleştireceğiz.

Örnek:

from itertools import chain

print("Merging two range into one")
frange =chain(range(10), range(10, 20, 1))
for i in frange:
    print(i, end=" ")

Çıktı:

Merging two range into one
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

NumPy ile range() işlevini kullanma

NumPy modülünde, range() fonksiyonuna benzer şekilde çalışan ve benzer çıktılar veren bir arange() fonksiyonu bulunur. arange() fonksiyonu, range() fonksiyonuyla aynı parametreleri alır.

Sözdizimi:

arange(start, stop, step)

NumPy ile çalışmak için aşağıdaki adımları izleyin.

1. Adım: NumPy modülünü içe aktar

import numpy

Eğer çalıştırma sırasında "numpy modülü bulunamadı" hatası alırsanız, 2. adımda gösterildiği gibi modülü yüklemeniz gerekir.

2. Adım: NumPy'ı yükleyin

pip install numpy

3. Adım: NumPy kullanılarak arange()'ın Çalışma Örneği

import numpy as np

for  i in np.arange(10):
   print(i, end =" ")  

Çıktı:

0 1 2 3 4 5 6 7 8 9

NumPy arange() kullanarak kayan nokta sayıları

`range()` fonksiyonu kullanılarak ondalık sayı dizisi elde etmek mümkün değildir, ancak NumPy'nin `arange()` fonksiyonu kullanılarak bu mümkündür.

Örnek:

İstediğimiz aralık 0.5 ile 1.5 arasıdır. Değer 0.2 artırılacaktır.

import numpy as np

for  i in np.arange(0.5, 1.5, 0.2):
   print(i, end =" ")  

Çıktı:

0.5 0.7 0.8999999999999999 1.0999999999999999 1.2999999999999998

Elde ettiğimiz çıktı biraz garip; bazı ondalık sayılar 16 basamaklı olarak gösteriliyor. Bu, ondalık sayıların ikili biçimde saklanmasının karmaşıklığından kaynaklanmaktadır. Gerekirse değerleri yuvarlayabilir ve ihtiyacınız olan ondalık basamak sayısıyla sınırlayabilirsiniz.

SSS

In Python 3. `range()` fonksiyonu, liste değil, tembel ve değiştirilemez bir aralık nesnesi döndürür. İhtiyaç duyulduğunda sayılar üretir. Gerçek bir liste gerektiğinde `list(range(n))` içine alın. Python 2 tanesi tam liste döndürdü.

Durdurma değeri hariç tutulmuştur, böylece range(len(items)) sıfır tabanlı indekslere düzgün bir şekilde eşlenir. Bitiş noktasını dahil etmek için durdurma değerine bir ekleyin, örneğin 1'den 10'a kadar saymak için range(1, 11).

Hayır. range(0, 10, 0) çağrısı ValueError: range() arg 3 must not be zero hatası verir, çünkü sıfır adım asla durdurma değerine ulaşamaz ve sonsuza kadar döngüye girer. Bunun yerine pozitif veya negatif bir adım kullanın.

`range()` fonksiyonu ondalık sayıları reddeder, ancak liste anlama yöntemi tamsayıları ölçeklendirebilir: `[x * 0.5 for x in range(0, 6)]` ifadesi 0.0 ile 2.5 arasında sonuç üretir. Bu, NumPy'yi içe aktarmaktan kaçınırken yine de adım adım ilerlemeyi sağlar.ping ondalık değerler aracılığıyla.

Evet. Bir aralık nesnesi yalnızca başlangıç, bitiş ve adım değerlerini saklar, bu nedenle range(1000000) tıpkı range(10) gibi aynı küçük, sabit miktarda bellek kullanır. Değerler yineleme sırasında tek tek hesaplanır.

`in` operatörünü kullanın: `5 in range(0, 10)` ifadesi `True` değerini döndürür. `range` nesneleri için, Python Bu üyelik testini her bir elemanı taramak yerine sabit sürede hızlı aritmetik kullanarak gerçekleştirir, bu nedenle çok büyük aralıklarda bile verimli kalır.

Makine öğrenimi kodları, eğitim dönemleri üzerinde döngü yapmak, mini grupları yinelemek ve hiperparametre ızgaraları oluşturmak için `range()` fonksiyonunu kullanır. NumPy'nin `arange()` ve `linspace()` fonksiyonları, yapay zeka deneylerinde yaygın olarak kullanılan öğrenme oranı programları ve eşik taramaları için bunu kayan noktalı aralıklara genişletir.

Evet. GitHub Copilot gibi yapay zeka kodlama asistanları, yorum veya fonksiyon adından range() tabanlı döngüleri otomatik olarak tamamlar ve aracı araçlar, indeks döngülerini daha temiz enumerate() veya anlama kalıplarına dönüştürebilir, ancak oluşturulan sınırların yine de hızlı bir şekilde gözden geçirilmesi gerekir.

Bu yazıyı şu şekilde özetleyin: