खोज…


ऐरे की समझ

बेसिक सिंटेक्स

जूलिया की सरणी समझ निम्नलिखित सिंटैक्स का उपयोग करती है:

[expression for element = iterable]

ध्यान दें कि साथ के रूप में for छोरों , के सभी = , in , और समझ के लिए स्वीकार कर रहे हैं।

यह लगभग खाली सरणी बनाने और push! for लूप का उपयोग करने के बराबर है push! यह करने के लिए आइटम।

result = []
for element in iterable
    push!(result, expression)
end

हालाँकि, एक सरणी समझ का प्रकार जितना संभव हो उतना संकीर्ण है, जो प्रदर्शन के लिए बेहतर है।

उदाहरण के लिए, पूर्णांक के वर्गों के एक सरणी को 1 से 10 तक प्राप्त करने के लिए, निम्नलिखित कोड का उपयोग किया जा सकता है।

squares = [x^2 for x=1:10]

-लूप संस्करण के for यह एक साफ, संक्षिप्त प्रतिस्थापन है।

squares = []
for x in 1:10
    push!(squares, x^2)
end

सशर्त सरणी समझ

जूलिया 0.5 से पहले, सरणी समझ के अंदर की स्थितियों का उपयोग करने का कोई तरीका नहीं है। लेकिन, यह अब सच नहीं है। जूलिया 0.5 में हम निम्न स्थितियों की तरह अंदर की स्थितियों का उपयोग कर सकते हैं:

julia> [x^2 for x in 0:9 if x > 5] 
4-element Array{Int64,1}:
 36
 49
 64
 81

उपरोक्त उदाहरण का स्रोत यहां पाया जा सकता है

यदि हम नेस्टेड सूची समझ का उपयोग करना चाहते हैं:

julia>[(x,y) for x=1:5 , y=3:6 if y>4 && x>3 ]
4-element Array{Tuple{Int64,Int64},1}:
 (4,5)
 (5,5)
 (4,6)
 (5,6)

बहुआयामी सरणी समझ

लूप्स के for नेस्ट का उपयोग कई अनूठे पुनरावृत्तियों पर पुन: व्यवस्थित करने के लिए किया जा सकता है।

result = []
for a = iterable_a
    for b = iterable_b
        push!(result, expression)
    end
end

इसी प्रकार, एकाधिक पुनरावृत्ति विनिर्देशों को एक सरणी समझ के लिए आपूर्ति की जा सकती है।

[expression for a = iterable_a, b = iterable_b]

उदाहरण के लिए, 1:3 और 1:2 के कार्टेशियन उत्पाद को उत्पन्न करने के लिए निम्नलिखित का उपयोग किया जा सकता है।

julia> [(x, y) for x = 1:3, y = 1:2]
3×2 Array{Tuple{Int64,Int64},2}:
 (1,1)  (1,2)
 (2,1)  (2,2)
 (3,1)  (3,2)

चपटे बहुआयामी सरणी समझ समान हैं, सिवाय इसके कि वे आकार खो देते हैं। उदाहरण के लिए,

julia> [(x, y) for x = 1:3 for y = 1:2]
6-element Array{Tuple{Int64,Int64},1}:
 (1, 1)
 (1, 2)
 (2, 1)
 (2, 2)
 (3, 1)
 (3, 2)

ऊपर का एक चपटा संस्करण है। वाक्यात्मक अंतर यह है कि एक अतिरिक्त है for एक अल्पविराम के बजाय प्रयोग किया जाता है।

जनरेटर की समझ

जेनरेटर कॉम्प्रिहेंशन एरे कॉम्प्रिहेंशन के समान प्रारूप का अनुसरण करते हैं, लेकिन वर्ग कोष्ठक [] बजाय कोष्ठक () उपयोग करते हैं।

(expression for element = iterable)

ऐसी अभिव्यक्ति Generator ऑब्जेक्ट को लौटाती है।

julia> (x^2 for x = 1:5)
Base.Generator{UnitRange{Int64},##1#2}(#1,1:5)

कार्य तर्क

कोष्ठक के एक अतिरिक्त सेट की आवश्यकता के बिना, एक समारोह में एकमात्र तर्क के रूप में जनरेटर की समझ प्रदान की जा सकती है।

julia> join(x^2 for x = 1:5)
"1491625"

हालांकि, यदि एक से अधिक तर्क प्रदान किए जाते हैं, तो जनरेटर की समझ अपने स्वयं के कोष्ठकों के सेट को पुन: उत्पन्न करती है।

julia> join(x^2 for x = 1:5, ", ")
ERROR: syntax: invalid iteration specification

julia> join((x^2 for x = 1:5), ", ")
"1, 4, 9, 16, 25"


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow