Ох, затем возможно, что вызов LDAP не работает, потому что Вы не могли бы быть в среде Active Directory. Если это верно, затем каждая из Ваших машин ответственна за свое собственное хранилище идентификационных данных. И Ваш первый пример кода не работает по сети, потому что машина, на которой Вы выполняете свой код, не знает, как разрешить SID, который только имеет смысл на удаленной машине.
действительно необходимо проверить, являются ли машины частью Active Directory. Вы знали бы это во время процесса входа в систему. Или можно проверить щелчок правой кнопкой по "My Computer", выбрать "Свойства", вкладку "Computer Name", затем видеть, является ли компьютер частью домена.
Python
print list[::3] # print it
newlist = list[::3] # copy it
Perl
for ($i = 0; $i < @list; $i += 3) {
print $list[$i]; # print it
push @y, $list[$i]; # copy it
}
Perl:
То же, что и в ответе draegtun, но с использованием переменной count:
my $i;
my @new = grep {not ++$i % 3} @list;
Perl 5.10 новые переменные состояния очень удобны здесь:
my @every_third = grep { state $n = 0; ++$n % 3 == 0 } @list;
Также обратите внимание, что вы можете предоставить список элементов для срезания:
my @every_third = @list[ 2, 5, 8 ]; # returns 3rd, 5th & 9th items in list
Вы можете динамически создавать это список срезов с использованием карты (см. отличный ответ от Gugod) или подпрограммы:
my @every_third = @list[ loop( start => 2, upto => $#list, by => 3 ) ];
sub loop {
my ( %p ) = @_;
my @list;
for ( my $i = $p{start} || 0; $i <= $p{upto}; $i += $p{by} ) {
push @list, $i;
}
return @list;
}
Обновление:
Что касается комментария runrig ... это «один способ» заставить его работать внутри цикла:
my @every_third = sub { grep { state $n = 0; ++$n % 3 == 0 } @list }->();
В Perl:
$size = @array;
for ($i=0; $i<$size; $i+=3) # or start from $i=2, depends what you mean by "every third index"
{
print "$array[$i] ";
}
Perl:
# The initial array
my @a = (1..100);
# Copy it, every 3rd elements
my @b = @a[ map { 3 * $_ } 0..$#a/3 ];
# Print it. space-delimited
$, = " ";
say @b;
Вы можете создать фрагмент на Perl.
my @in = ( 1..10 );
# need only 1/3 as many indexes.
my @index = 1..(@in/3);
# adjust the indexes.
$_ = 3 * $_ - 1 for @index;
# These would also work
# $_ *= 3, --$_ for @index;
# --($_ *= 3) for @index
my @out = @in[@index];
@array = qw(1 2 3 4 5 6 7 8 9); print @array[(grep { ($_ + 1) % 3 == 0 } (1..$#array))];