상세 컨텐츠

본문 제목

리스트의 요소를 취득하는 함수 nth, last, assoc

IT & Programming/LISP 공부

by 그림아이 2021. 12. 25. 05:00

본문

반응형

이번 기사에서는 함수 「nth」 「last」 「assoc」에 대해 해설해 갑니다.

AutoLISP를 사용하면 모든 데이터를 목록이라는 변수에 저장할 수 있습니다. 리스트를 최대한 활용하기 위해서는 요소(리스트의 내용)를 취득하는 것이 필수가 됩니다.

요소를 취득하려면 전용의 함수를 사용합니다만, 각각 취득할 수 있는 요소가 다르므로 용도에 따른 구분이 필요합니다.

사용 예와 함께 해설하고 있으므로 꼭 봐 주세요.

 

n번째 요소 얻기 nth

nth의 동작

목록의 요소를 얻는 함수에는 car와 cdr이 있습니다. 게다가 car와 cdr의 편성을 심플하게 표현한 cadr나 cadddr등도 있습니다만, 5번째 이후의 요소에는 대응하고 있지 않다고 하는 단점이 있습니다.

 

nth는 n번째 요소를 얻을 수 있으므로, 5번째 이후의 요소도 취득할 수 있습니다.

다음 목록에서 다섯 번째 요소(숫자 5)를 얻는 예를 설명합니다.

(setq lst (list 1 2 3 4 5 6))

nth 의 인수는 취득하고 싶은 요소의 번호와 대상의 리스트입니다. 프로그램 설명은 다음과 같습니다.

(nth 4 lst)

이때 요소 번호에 유의하십시오. 첫 번째 요소 번호는 0 이므로 다섯 번째 요소를 얻으려면 인수에 4를 지정합니다.

또, 최대의 요소 번호보다 큰 수치를 지정했을 경우는 nil 가 돌려주어집니다.

nth 형식

nth 구문과 인수 및 반환 값은 다음과 같습니다.

구문
(nth n lst )
인수
n리스트로부터 취득하는 요소의 번호. 선두의 번호는 0.lst요소를 취득하는 리스트.
반환값
n번째 요소 / nil인수에 지정한 리스트의 n번째의 요소가 돌려주어진다. n 이 리스트의 최대 요소 번호보다 큰 경우와 리스트가 하늘의 경우는 nil를 돌려준다.

마지막 요소 얻기 last

마지막 동작

last는 이름과 같이 목록의 마지막 요소를 얻을 수 있는 함수입니다.

앞에서 설명한 nth로 목록의 마지막 요소를 얻으려면 목록의 요소 수를 확인해야합니다.

그러나 last의 인수는 목록뿐이므로 nth처럼 요소 수를 확인할 필요가 없습니다.

다음 목록에서 마지막 요소(숫자 5)를 검색하는 예를 설명합니다.

(setq lst (list 1 2 3 4 5))

프로그램 설명은 다음과 같습니다.

(last lst)

last 서식

last 구문과 인수 및 반환값은 다음과 같습니다.

구문
(last lst )
인수
lst마지막 요소를 얻는 목록.
반환값
마지막 요소 / nil인수에 지정한 리스트의 마지막 요소가 돌려주어진다. 목록이 비어 있으면 nil을 반환합니다.

요소 검색 assoc

assoc의 동작

assoc은 목록을 키워드로 검색하고 키워드를 첫 번째 요소로 포함하는 리스트를 반환하는 함수입니다. 주로 도형 정의 데이터 등의 연상 리스트로부터 요소를 취득할 경우에 사용합니다.

 

다음의 연상 리스트로부터 1을 선두 요소에 가지는 요소(가운데의 요소)를 취득하는 예를 설명합니다.

(setq lst (list (cons 0 "a") (cons 1 "b") (cons 2 "c"))

인수는 키워드와 대상 목록이므로 프로그램 설명은 다음과 같습니다.

(assoc 1 lst)

이 경우의 반환값은 (1 . "b") 가 됩니다.

assoc의 특징으로서 키워드를 선두에 가지는 요소가 복수 있는 경우는 최초로 발견한 요소를 돌려 주므로 주의해 주세요.

다음 목록에서 키워드를 1로 assoc을 실행하면 반환 값은 앞에 가까운 두 번째 요소입니다.

(setq lst (list (cons 0 "a") (cons 1 "b") (cons 1 "bb"))

assoc 형식

assoc의 구문과 인수 및 반환값은 다음과 같습니다.

구문
(assoc element alist )
인수
element검색할 목록의 첫 번째 요소입니다.alist검색할 연상 목록 또는 일반 목록.
반환값
alist 요소 / nilalist 내에서 element 를 선두 요소로 가지는 컨스셀이 발견되면 그 컨스셀을 돌려준다. 찾을 수 없으면 nil이 반환됩니다.

요약

이번 정리

  • nth는 n번째 요소를 얻을 수 있다. 선두의 요소 번호는 0이므로 주의.
  • last는 마지막 요소를 얻습니다.
  • assoc는 키워드를 검색할 수 있고 처음에 발견한 요소를 반환합니다.

프로그래밍

 

 

728x90
반응형

관련글 더보기

댓글 영역