Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 27.03.2024
Сообщений: 35

Сравнение 2х массивов

27.03.2024, 18:50. Показов 907. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Решил я сравнить 2 массива и вывести значения которые не совпадают
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
$array1 = @(1, 2, 3, 4, 5)
 
$array2 = @(4, 5, 6, 7, 8)
 
foreach ($element in $userExcel) {
 
 
if ($element -notin $userGroup.mail) {
 
    $element 
}
 
}
Выводит всё как нужно. Но я решил попробовать это сделать через for

PowerShell
1
2
3
4
5
6
7
8
 for ($i = 0; $i -lt $userExcel.Length; $i++) {
     for ($y = 0; $y -lt $userGroup.Length; $y++) {
         if($userExcel[$i] -notin $userGroup[$y].mail)
         {
             $userExcel[$i]
         }
     }
 }
В результате он выводит всё подряд + задваиваются значения так как цикл внутри цикла пробегается. Как можно сделать вывод через for тот же самый как и через foreach
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.03.2024, 18:50
Ответы с готовыми решениями:

Сравнение массивов
Добрый день! Подскажите как сделать сравнение массивов $Path и $VHD PS C:\Windows\system32> $Path ...

Сравнение массивов: найти максимальное перебором массивов
Добрый вечер такая проблема даны два одномерных массива A, B причем в каждом массиве записанно число по разрядно Задачи найти...

Сравнение массивов
Подскажите что делаю не так.. Возвращает true, если элементы в этих двух массивах одинаковые, иначе возвращает false function...

8
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,664
Записей в блоге: 65
27.03.2024, 20:35
superspagetti,
PowerShell
1
2
3
4
5
6
7
$numbers1 = @(1, 2, 3, 4, 5)
$numbers2 = @(4, 5, 6, 7, 8)
 
$numbers1 + $numbers2 
| Group-Object
| Where-Object Count -eq 1
| ForEach-Object Group
Добавлено через 1 минуту
Code
1
2
3
4
5
6
1
2
3
6
7
8
а так вопрос провокационный так так имеет множество решений.

Добавлено через 17 минут
PowerShell
1
2
3
4
5
6
7
8
9
10
$numbers1 = @(1, 2, 3, 4, 5)
$numbers2 = @(4, 5, 6, 7, 8)
 
$dict = [System.Collections.Generic.Dictionary[int, int]]::new()
 
($numbers1 + $numbers2).ForEach{
    $dict.$_ += 1   
}
 
$dict.Keys | Where-Object {$dict.$_ -eq 1}
так наверное мне нравится больше...

Добавлено через 14 минут
смог сделать через for, но вычитать пришлось дважды
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$numbers1 = @(1, 2, 3, 4, 5)
$numbers2 = @(4, 5, 6, 7, 8)
 
$res = @()
for ($i = 0; $i -lt $numbers1.Count; $i++) {
    $found = $false
    for ($j = 0; $j -lt $numbers2.Count; $j++) {
        if ($numbers1[$i] -eq $numbers2[$j]){
            $found = $true
            break
        }
    }
    if (!$found) {$res +=, $numbers1[$i]}
}
 
for ($i = 0; $i -lt $numbers2.Count; $i++) {
    $found = $false
    for ($j = 0; $j -lt $numbers1.Count; $j++) {
        if ($numbers2[$i] -eq $numbers1[$j]){
            $found = $true
            break
        }
    }
    if (!$found) {$res +=, $numbers2[$i]}
}
 
$res
Добавлено через 14 минут
тут еще нужно решить вопрос что делать с элементами которые неуникальны внутри одного массива иначе все пойдет не по плану.
0
2803 / 501 / 120
Регистрация: 26.09.2020
Сообщений: 948
Записей в блоге: 5
27.03.2024, 21:22
superspagetti, ничего не понятно. Указываете два массива, изъявляете желание их сравнить, но не сравниваете. Вместо этого нежданно появляются коллекции $userExcel и $userGroup… непонятненько
alhaos, а Вы на какой вопрос отвечали, может и я на него
PowerShell
1
2
$array1 = @(1, 2, 3, 4, 5)
$array2 = @(4, 5, 6, 7, 8)
PowerShell
1
2
3
4
5
6
7
8
9
for ($i = 0; $i -lt $array1.Count; $i++) {
    if ($array1[$i] -notin $array2) {
        $array1[$i]
    }
 
    if ($array2[$i] -notin $array1) {
        $array2[$i]
    }
}
Enumerable Except
PowerShell
1
2
3
4
5
$a1 = [System.Collections.Generic.List[int]] $array1
$a2 = [System.Collections.Generic.List[int]] $array2
 
[System.Linq.Enumerable]::Except($a1, $a2)
[System.Linq.Enumerable]::Except($a2, $a1)
Или вообще Union
PowerShell
1
[System.Linq.Enumerable]::Union($a1, $a2)
1
 Аватар для volodin661
6686 / 2278 / 347
Регистрация: 10.12.2013
Сообщений: 7,873
27.03.2024, 22:10
Не хотите ли вы направить течение ваших мыслей
в уже прорытое русло Теории Множеств ?


чтобы можно было пользоваться привычными терминами
и говорить об одном и том же.




superspagetti,

symmetric difference ?

Добавлено через 21 минуту
PS: В Powershell для подобных операций можно воспользоваться
командлетом Compare-Object

Добавлено через 21 минуту
Symmetric Difference
PowerShell
1
2
3
$A = &{1, 2, 3, 4, 5}
$B = &{4, 5, 6, 7, 8}
Compare-Object $A $B | Select -ExpandProperty InputObject
ouutput:
6
7
8
1
2
3
2
 Аватар для volodin661
6686 / 2278 / 347
Регистрация: 10.12.2013
Сообщений: 7,873
27.03.2024, 22:42


язык программирования Raku

Perl
1
2
3
4
5
6
my $A := 1,2,3,4,5;
my $B := 4,5,6,7,8;
 
say ($A$B)($A$B) ;
 
say ($A$B)($B$A) ;
output:
Set(1 2 3 6 7 8)
Set(1 2 3 6 7 8)
0
 Аватар для volodin661
6686 / 2278 / 347
Регистрация: 10.12.2013
Сообщений: 7,873
27.03.2024, 23:29
но можно и сразу, используя оператор SymmetricDifference

Perl
1
say (1,2,3,4,5)(4,5,6,7,8)
Set(1 2 3 6 7 8)

Добавлено через 9 минут
язык программирования Python
Python
1
A={1,2,3,4,5}; B={4,5,6,7,8}; print(A.symmetric_difference(B))
output:
{1, 2, 3, 6, 7, 8}

Добавлено через 30 минут
язык программирования C#
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
using System;
using System.Collections.Generic;
using System.Linq;
 
namespace SymmetricDifference
{
    public static class IEnumerableExtension
    {
        public static IEnumerable<T> SymmetricDifference<T>(this IEnumerable<T> @this, IEnumerable<T> that)
        {
            return @this.Except(that).Concat(that.Except(@this));
        }
    }
 
    class Program
    {
        static void Main()
        {
            var a = new[] { 1,2,3,4,5};
            var b = new[] { 4,5,6,7,8};
 
            foreach (var element in a.SymmetricDifference(b))
            {
                Console.WriteLine(element);
            }
        }
    }
}
Output
1
2
3
6
7
8
0
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,664
Записей в блоге: 65
28.03.2024, 06:54
Цитата Сообщение от iNNOKENTIY21 Посмотреть сообщение
а Вы на какой вопрос отвечали, может и я на него
я понял как из суммы двух массивов уникальных элементов нужно выбрать уникальные.

Цитата Сообщение от volodin661 Посмотреть сообщение
Не хотите ли вы направить течение ваших мыслей
в уже прорытое русло Теории Множеств ?
массив не всегда множество, в частном случае да

Добавлено через 12 минут
volodin661, Декларативненько как то у тебя все...

особенно это
Цитата Сообщение от volodin661 Посмотреть сообщение
say (1,2,3,4,5) ⊖ (4,5,6,7,8)

Go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package main
 
import "fmt"
 
func main() {
 
    ints1 := []int{1, 2, 3, 4, 5}
    ints2 := []int{4, 5, 6, 7, 8}
 
    m := make(map[int]int)
 
    for _, n := range ints1 {
        m[n] += 1
    }
 
    for _, n := range ints2 {
        m[n] += 1
    }
 
    resInts := make([]int, 0, len(ints1)+len(ints2))
 
    for k, v := range m {
        if v == 1 {
            resInts = append(resInts, k)
        }
    }
 
    fmt.Println(resInts)
}

Code
1
[6 7 8 1 2 3]
0
1658 / 273 / 66
Регистрация: 03.06.2020
Сообщений: 689
28.03.2024, 13:37
PowerShell
1
2
3
4
[int[]] $numbers1 = 1, 2, 3, 4, 5
[int[]] $numbers2 = 4, 5, 6, 7, 8
[Linq.Enumerable]::Except($numbers1, $numbers2)
[Linq.Enumerable]::Except($numbers2, $numbers1)
Добавлено через 12 минут
Извиняюсь, уже было
0
Любознательный
 Аватар для YuS_2
7405 / 2255 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
28.03.2024, 15:58
Цитата Сообщение от volodin661 Посмотреть сообщение
print(A.symmetric_difference(B))
проще можно
Python
1
print(A^B)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.03.2024, 15:58
Помогаю со студенческими работами здесь

Сравнение массивов
Вот такая конструкция: int first = new int { 1, 1, 1, 1 }; int second = new int { 1, 1, 1, 1, }; if...

Сравнение массивов
Добрый день. Стоит такая задача. Имеются два набора координат - X и X1 (см. код). Для первого набора координат заданы значения функции - A....

Сравнение массивов
У меня есть 2 массива, которые берут данные с базы данных MySQL. В обоих массивах есть одинаковые значение типа BIGINT. Мне нужно найти...

Сравнение массивов
Я думаю вам понятно что делает код. Вот только как сюда впихнуть перегрузку? using System; using System.Collections.Generic; using...

Сравнение массивов
Заданы целочисленный вектор X и вещественный вектор Y. Напишите программу, которая определяет, являются ли элементы вектора Xi значениями...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru