2017-06-19 24 views
5

में इंडेक्स से टुपल बनाना मेरे पास एक सेट एस = {1,2,3} है। मैं फॉर्म (i, j, 1) का एक tuple बनाने की कोशिश कर रहा हूं जिसके लिए मैं और जे एस के तत्व हैं जब एस = {1,2,3}, tuples का मेरा सेट (ई कहें) होना चाहिए { (1,2,1), (2,1,1), (1,3,1), (3,1,1), (3,2,1), (2,3,1)}। मैंने निम्नलिखित तरीके से कोशिश की।जूलिया प्रोग्रामिंग - सेट

for i in S 
     for j in S 
     E = Set() 
     E = [(i,j,1),(j,i,1), i!=j] 
     print(E) 
     end 
    end 

लेकिन यह मुझे आवश्यक result.What मैं हो रही है नहीं देता है

किसी भी [(2,2,1), (2,2,1), झूठी] किसी भी [(2,3,1), (3,2,1), सच] कोई [(2,1,1), (1,2,1), सच] कोई [(3,2,1), (2,3,1), सच] कोई [(3,3,1), (3,3,1), झूठी] कोई [(3,1,1), (1,3,1), सच] किसी भी [(1,2,1), (2,1,1), सच] कोई [(1,3,1), (3,1,1), सच] कोई [(1,1,1), (1,1,1), झूठी]

क्या कोई मुझे आवश्यक परिणाम प्राप्त करने में मेरी सहायता कर सकता है?

उत्तर

3

एक अधिक सामान्य समाधान हो सकता है:

julia> [(first(i)..., last(i)...) for i in Base.product(permutations(1:4, 3), [(5,6)])] 
24×1 Array{Tuple{Int64,Int64,Int64,Int64,Int64},2}: 
(1,2,3,5,6) 
(1,2,4,5,6) 
(1,3,2,5,6) 
(1,3,4,5,6) 
(1,4,2,5,6) 
(1,4,3,5,6) 
(2,1,3,5,6) 
(2,1,4,5,6) 
(2,3,1,5,6) 
(2,3,4,5,6) 
(2,4,1,5,6) 
(2,4,3,5,6) 
(3,1,2,5,6) 
(3,1,4,5,6) 
(3,2,1,5,6) 
(3,2,4,5,6) 
(3,4,1,5,6) 
(3,4,2,5,6) 
(4,1,2,5,6) 
(4,1,3,5,6) 
(4,2,1,5,6) 
(4,2,3,5,6) 
(4,3,1,5,6) 
(4,3,2,5,6) 
7

आप प्राप्त कर सकते हैं क्या आप के साथ एक list comprehension हैं:

[(i,j,1) for i in S for j in S if i != j] 

ध्यान दें कि यह आप एक सरणी देता है, लेकिन आप तो एक सेट निर्माता पर इस पारित कर सकते हैं; वैकल्पिक रूप से आप एक 'generator' सीधे उपयोग कर सकते हैं:

Set((i,j,1) for i in S for j in S if i != j) 

क्या मैं हालांकि गलत कर रहा था?

कोड का यह हिस्सा:

E = Set() 
E = [(i,j,1),(j,i,1), i!=j] 

आप क्या सोचते हैं यह करता है नहीं करता है। मुझे लगता है कि आप 'सेट' ऑब्जेक्ट के रूप में 'तत्काल' होने के लिए E का इरादा रखते हैं, जिसके बाद आप उन्हें ई को "असाइन" करके तत्वों को "संलग्न" करने की उम्मीद कर रहे थे। (इसके अलावा, आप एक सामान्य तत्व की अपेक्षा क्यों करते हैं चयन परीक्षा के रूप में कार्य करें, लेकिन जो भी हो)।

लेकिन स्पष्ट रूप से यह काम नहीं करता है, क्योंकि हर बार जब आप E को कुछ आवंटित , आप एक नई वस्तु [के लिए एक संदर्भ] के साथ अपने पिछले सामग्री बदल रहे हैं।

अगर आप ध्यान से करने से इस दृष्टिकोण 'जोड़कर' अपने वांछित तत्वों एक-एक करके चाहता था, इस संभव है, लेकिन आप इसे इस प्रकार किया जाना चाहिए:

E = Set() 
for i in S, j in S 
    if i != j 
    push!(E, (i,j,1), (j,i,1)); 
    end 
end 

(यह भी ध्यान रखें जूलिया की विशेष 'नेस्ट पाश के लिए' वाक्य रचना यहाँ)