में डुप्लिकेट मानों को धक्का देने से कैसे बचें मुझे इनपुट से एक सरणी में अद्वितीय तत्व जोड़ने की आवश्यकता है जिसमें कई डुप्लिकेट मान हैं।एक पर्ल सरणी
मैं डुप्लिकेट मानों को एक पर्ल सरणी में धक्का देने से कैसे बचूं?
में डुप्लिकेट मानों को धक्का देने से कैसे बचें मुझे इनपुट से एक सरणी में अद्वितीय तत्व जोड़ने की आवश्यकता है जिसमें कई डुप्लिकेट मान हैं।एक पर्ल सरणी
मैं डुप्लिकेट मानों को एक पर्ल सरणी में धक्का देने से कैसे बचूं?
आप बस इस तरह हैश उपयोग करने की आवश्यकता:
my %hash;
$hash{$key} = $value; # you can use 1 as $value
...
यह स्वचालित रूप से डुप्लिकेट चाबी ऊपर लिख देगा।
जब आप इसे प्रिंट करने की जरूरत है, बस का उपयोग करें:
foreach my $key (keys %hash) {
# do something with $key
}
आप, कुंजी सॉर्ट करने के लिए यह जाँच करता है
foreach my $key (sort keys %hash) ...
वाह, यह नया रिकॉर्ड होना चाहिए: जवाब 4 साल बाद स्वीकार किया गया :) – mvp
उसे यह सुनिश्चित करना था कि यह काम करता है। ; पी –
push(@yourarray, $yourvalue) unless grep{$_ == $yourvalue} @yourarray;
का उपयोग करता है, तो मान सरणी से पहले में मौजूद है की जरूरत है धक्का। यदि मान मौजूद नहीं है तो इसे धक्का दिया जाएगा।
यदि मान संख्यात्मक नहीं है तो आपको ==
के बजाय eq
का उपयोग करना चाहिए।
यह समाधान बहुत अक्षम हो जाता है क्योंकि सरणी बड़ी हो जाती है - हैश विधि को प्राथमिकता दी जानी चाहिए। –
हम कर सकते हैं कम से कम पर्ल संस्करण ~~ का उपयोग करके 5.10.1
use v5.10.1;
use strict;
use warnings;
my @ARRAY1 = qw/This is array of backup /;
my @ARRAY2;
my $value = "version.xml" ;
sub CheckPush($$)
{
my $val = shift (@_);
my $array_ref= shift (@_);
unless ($val ~~ @$array_ref)
{
print "$val is going to push to array \n";
push(@$array_ref,$val);
}
return (@$array_ref);
}
@ARRAY1 = CheckPush($value,\@ARRAY1);
print "out \n";
foreach $_ (@ARRAY1) {
print "$_ \n";
}
@ARRAY2 = CheckPush ($value,\@ARRAY2);
print "out2 \n";
foreach $_ (@ARRAY2) {
print "$_ \n";
}
संक्षेप में: 'पुश (@yourarray, $ yourvalue) जब तक आपके $ ~~ @yourarray; '' – Codr
आप एक सेट की धारणा का उपयोग कर सकते है: http://stackoverflow.com/questions/3700037/how-can-i- प्रतिनिधित्व-सेट-इन-पर्ल – akonsu
यदि आप सीपीएएन का विरोध नहीं कर रहे हैं तो हमेशा 'सूची :: MoreUtils' uniq फ़ंक्शन होता है। – squiguy