रे

रेंज में Julia

1 अभ्यास

रेंज के बारे में

मान लीजिए आपको शून्य से लेकर 1000 तक के सभी पूर्णांक चाहिए। इन सबको एक ऐरे में टाइप करना बेतुका होगा।

इसके लिए हमारे पास range टाइप है:

julia> 0:1000
0:1000

julia> typeof(0:1000)
UnitRange{Int64}

रेंज बहुत आम हैं, और ये सिर्फ़ आपकी टाइपिंग बचाने के लिए ही नहीं, बल्कि फंक्शनों के रिटर्न टाइप के तौर पर भी काम आती हैं।

ध्यान दीजिए कि रेंज ऐरे नहीं हैं।

ऐरे शुरू में ही बना दिए जाते हैं ("लालची" मूल्यांकन), और इनके लिए ऐरे की लंबाई के समानुपाती जगह चाहिए।

इसके उलट, रेंज तो किसी क्रम को बनाने के लिए दिए गए कुछ निर्देश भर हैं ("आलसी" मूल्यांकन, या एक "इटरेटर")।

अगर आपको रेंज ऐरे के रूप में चाहिए, तो बदलने के लिए collect() फंक्शन इस्तेमाल कीजिए:

julia> collect(0:5)
6-element Vector{Int64}:
 0
 1
 2
 3
 4
 5

चाहें तो आउटपुट ऐरे का टाइप तय करने के लिए collect(type, range) इस्तेमाल कीजिए।

स्टेप साइज़ भी तय किया जा सकता है, यहाँ 0.3:

julia>  collect(1.0:0.3:2.0)
4-element Vector{Float64}:
 1.0
 1.3
 1.6
 1.9

तो सिंटैक्स है start:stepsize:stop। दोनों सिरों की सीमाएँ शामिल होती हैं, जैसा पूर्णांक वाले उदाहरण में दिखा। अगर स्टेप साइज़ stop - start में पूरी तरह नहीं बँटता, तो अंतिम एलिमेंट stop से आगे नहीं बढ़ेगा।

और बारीक नियंत्रण के लिए Base.range() फंक्शन इस्तेमाल कीजिए, जिसमें कई और विकल्प हैं।

अक्षरों की रेंज

रेंज में संख्याओं के अलावा दूसरे क्रम भी इस्तेमाल किए जा सकते हैं। सबसे आसान उदाहरण ASCII अक्षर हैं:

julia> 'a':'d'
'a':1:'d'

julia> typeof('a':'d')
StepRange{Char, Int64}

julia> collect('a':'d')
4-element Vector{Char}:
 'a': ASCII/Unicode U+0061 (category Ll: Letter, lowercase)
 'b': ASCII/Unicode U+0062 (category Ll: Letter, lowercase)
 'c': ASCII/Unicode U+0063 (category Ll: Letter, lowercase)
 'd': ASCII/Unicode U+0064 (category Ll: Letter, lowercase)

Char टाइप के बारे में और विस्तार से किसी दूसरे कॉन्सेप्ट में बताया जाएगा। अभी के लिए इन्हें सिंगल कोट के अंदर लिखे एक-एक अक्षर ही मानिए।

रेंज के लिए फंक्शन और ऑपरेटर

रेंज की सीमाएँ first() और last() से देखिए।

यह पता लगाना अक्सर काम आता है कि कोई खास वैल्यू रेंज का हिस्सा है या नहीं। इसके पीछे का फंक्शन in() है, लेकिन इसके लिए इन्फिक्स ऑपरेटर in, या उसका ज़्यादा गणितीय रूप ∈ इस्तेमाल करना ज़्यादा आम है। किसी उपयुक्त एडिटर में ∈ लिखने का शॉर्टकट \in लिखकर टैब दबाना है।

 r = 1:10  # => 1:10
 first(r)  # => 1
 last(r)   # => 10
 7 in r    # => true
 11 ∈ r    # => false

यहाँ in या ∈ ऑपरेटर रेंज के साथ इस्तेमाल हुआ है, लेकिन इसे वेक्टर, सेट और डिक्शनरी जैसे कई दूसरे कलेक्शन टाइप के साथ भी इस्तेमाल किया जा सकता है।

ऐरे इंडेक्सिंग पर और बातें

ऐरे इंडेक्सिंग में पूर्णांक रेंज और ऐरे दोनों इस्तेमाल किए जा सकते हैं:

nums = collect(10.0:50.0)
nums[3:2:7]  # gives [12.0, 14.0, 16.0]
nums[ [3, 5, 7] ] # also gives [12.0, 14.0, 16.0]

end के साथ भी यह काम करता है, हालाँकि ऑपरेटर प्राथमिकता की वजह से कोष्ठक लगाना पड़ सकता है:

 nums[(end - 3):end]
4-element Vector{Float64}:
 47.0
 48.0
 49.0
 50.0

इसी तरह, इंडेक्स के किसी भी एलिमेंट की जगह पहले से बना कोई पूर्णांक वेरिएबल भी इस्तेमाल किया जा सकता है।

GitHub के ज़रिए संपादित करें यह लिंक नई विंडो या टैब में खुलता है।

रेंज सीखिए