2016-02-09 15 views
9

के लिए सरणी में तत्व हटाएं मैं दस्तावेज़ों और फ़ोरम में थोड़ी देर के लिए घूम रहा हूं और मुझे किसी सरणी में तत्व को हटाने का सरल कार्य करने के लिए विधि/फ़ंक्शन में अंतर्निहित नहीं मिला है। क्या ऐसा अंतर्निहित कार्य है?जूलिया

मैं अजगर की सूची के बराबर पूछ रहा हूं .remove (x)। काम नहीं करता है

julia> a=Any["D","A","s","t"] 
julia> pop!(a, "s") 
ERROR: MethodError: `pop!` has no method matching  
pop!(::Array{Any,1},  ::ASCIIString) 
Closest candidates are: 
    pop!(::Array{T,1}) 
    pop!(::ObjectIdDict, ::ANY, ::ANY) 
    pop!(::ObjectIdDict, ::ANY) 
    ... 

Heredeleteat! उपयोग करने के लिए उल्लेख है, लेकिन यह भी:

julia> deleteat!(a, "s") 
ERROR: MethodError: `-` has no method matching -(::Int64, ::Char) 
Closest candidates are: 
    -(::Int64) 
    -(::Int64, ::Int64) 
    -(::Real, ::Complex{T<:Real}) 
    ... 

in deleteat! at array.jl:621 

उत्तर

7

तुम भी filter! साथ जा सकते हैं:

a = Any["D", "A", "s", "t"] 
filter!(e->e≠"s",a) 
println(a) 

देता है:

filter!(e->e∉["s","A"],a) 

नोट 1:

Any["D","A","t"] 

इस के रूप में, एक बार में कई मूल्यों को नष्ट करने के लिए अनुमति देता है में जूलिया 0.5, गुमनाम कार्य बहुत तेज़ हैं और 0.4 में थोड़ा जुर्माना अब कोई मुद्दा नहीं है :-) ।

नोट 2: उपरोक्त कोड यूनिकोड ऑपरेटरों का उपयोग करता है। सामान्य ऑपरेटरों के साथ: != और e∉[a,b]!(e in [a,b])

+1

यह सबसे अच्छा समाधान है। लेकिन मेरे लिए फ़िल्टर! काम नहीं करता बस फिल्टर पर्याप्त है। तो अगर मेरे पास ऐरे बी = ["एस", "ए" है] मैं इस फ़िल्टर के रूप में उपयोग कर सकता हूं (ई-> ईएबीबी, ए) जो बहुत अच्छा काम करता है। –

6

deleteat! + findin यह करना होगा

यहाँ भोलेपन से बॉक्स के एक समारोह उठा का एक उदाहरण है:

a = Any["D", "A", "s", "t"] 
deleteat!(a, findin(a, ["s"])) # => ["D", "A", "t"] 

यह है क्योंकि pop! में ऐरे में किसी विशेष तत्व को समाप्त करने की विधि नहीं है, यह केवल अंतिम को समाप्त करती है, और deleteat! उस तत्व की अनुक्रमणिका की आवश्यकता होती है जिसे आप समाप्त करना चाहते हैं। एक Dict लिए

methods(pop!) 
methods(deleteat!) 

, आप तत्व की कुंजी delete! को खत्म करने के लिए फ़ीड कर सकते हैं: आप देख सकते हैं तरीकों एक समारोह methods साथ है।