2010-11-26 9 views
6

Jeśli mam listę jak tenZdobądź indeks listy wewnątrz listy w Lisp

((0 1 2) (3 4 5) (6 7 8) (0 3 6) (1 3 7) (2 4 8) (0 4 8) (2 4 6)) 

I chcę, aby znaleźć indeks (0 3 6), ma wbudowaną funkcję, aby to zrobić? POSITION wydaje się nie działać, gdy element wyszukiwania sam jest listą.

Odpowiedz

13

Zobacz hyperspec. Pozycja może wziąć :test argument:

 
(position '(0 3 6) 
      '((0 1 2) (3 4 5) (6 7 8) (0 3 6) (1 3 7) (2 4 8) (0 4 8) (2 4 6)) 
      :test #'equal)) 
3 

Domyślny test na pozycji (i innych operacji sekwencyjnych) jest EQL, nawiasem mówiąc.

+0

Co ciekawe, strona CLHS dla FIND łączy się z "Regulaminem funkcji testowych", ale strona dla POSITION nie. Oto gdzie udokumentowane jest domyślne "EQL": http://www.lispworks.com/documentation/HyperSpec/Body/17_ba.htm – Ken

+0

Przepraszam, ale który język powinienem wybrać w DrRacket, aby uruchomić ten kod @ Nietzche-jou –

Powiązane problemy