Come verificare se un elenco contiene valori provenienti da un altro elenco?Esiste una soluzione elegante per farlo anziché scorrere il secondo elenco utilizzando la funzione Contains()?
Automazione e scriptingR: Come verificare se un elenco contiene valori provenienti da un altro elenco?Non è una frase monoriga, ma è più elegante di un ciclo:
A = {1, 2, 3, 4, 5};
B = {3, 6, 7};
check = Associative Array(A);
check << Intersect(Associative Array(B));
N Items(check);R: Come verificare se un elenco contiene valori provenienti da un altro elenco?È possibile scorrere uno degli elenchi e utilizzare Contains() per verificare se l'elemento specifico dell'elenco si trova da qualche parte nell'altro elenco.
In alternativa, è possibile convertire entrambi gli elenchi in array associativi separati e quindi verificare l'intersezione tra i due array.
Names Default To Here( 1 );
listA = {"a", "b", "c"};
listB = {"d", "c", "f"};
inBothList = {};
For Each( {member}, listA,
If( Contains( listB, member ),
Insert Into( inBothList, member )
)
);
Show( inBothList );
arrayA = Associative Array( listA );
arrayB = Associative Array( listB );
arrayA << intersect( ArrayB);
show( arrayA );R: Come verificare se un elenco contiene valori provenienti da un altro elenco?Di solito uso For Each + Break o Associative Arrays, ma ci sono molti metodi diversi in cui è possibile utilizzare le funzioni in modo un po' "scorretto", come Transform Each (le "one-liner" come questa sono solitamente idee orribili (secondo me) in quanto tendono a essere difficili da leggere).
Names Default To Here( 1 );
A = {1, 2, 3, 4, 5};
B = {3, 6, 7};
r = Eval(Transform Each({item}, A, Output("Expression", "Any"), Contains(B, item)));
Dipende anche da cosa si sta confrontando: stringhe, numeri interi, numeri in virgola mobile, elenchi, ecc. poiché gli elenchi JMP possono contenere fondamentalmente qualsiasi cosa.