2017-09-12 1 views
-2

Je veux trouver les entrées dans une liste qui ne correspond pas à un modèle donné. Où le nom de la liste est variable. Je veux le faire dans une boucle for.Je veux trouver les entrées qui ne correspondent pas à un modèle donné dans la liste et le nom de la liste est une variable

Par exemple:

set li {{1 2} {1 3} {-1 -1}} 

lsearch -all -inline -exact -not $li {-1 -1} 

Ans: {1} {2 1 3}.

Mais mon problème est, je veux donner un nom de variable en place "li". li variera en boucle.

+0

Je ne comprends pas quel est le problème. Est-ce avec l'assemblage de la liste recherchée, ou le modèle utilisé pour filtrer la liste? Ou autre chose? (Le 'lsearch' ne se soucie pas vraiment de la façon dont vous créez la liste ou le modèle, tout se passe avant qu'il ne s'empare des choses.) –

+0

Quand vous dites _'je veux donner un nom de variable à la place de" li "' , Que voulez-vous dire? Parlez-vous de la première déclaration ou de la deuxième? –

+0

Salut, La liste que je veux utiliser variera en fonction de l'indice. – divya

Répondre

0

Votre question n'est pas claire. Je suppose que quand vous dites 'je veux donner un nom de variable en place "li"' que vous voulez dire que vous voulez utiliser une variable pour désigner le nom d'une autre variable.

Vous pouvez le faire en utilisant set:

set varname li 
lsearch -all -inline -exact -not [set $varname] {-1 -1} 

Lorsque vous faites [set $varname], tcl va d'abord remplacer "li" pour $varname. Cela transforme l'instruction en lsearch ... [set li] ..., et [set li] est fonctionnellement identique à $li.