6장: 목록, List
1. list 명령어
list는 주어진 인자들을 하나의 리스트로 만듭니다.
1.1 기본 구문
list 인자1 인자2 ...
1.2 사용 예시
set fruits [list apple banana cherry]
puts $fruits # 출력: apple banana cherry
set mixed [list "Hello World" 42 3.14 {nested list}]
puts $mixed # 출력: {Hello World} 42 3.14 {nested list}
1.3 주요 특징
공백이나 특수 문자를 포함한 인자도 하나의 요소로 처리합니다.
빈 리스트를 만들 때도 사용할 수 있습니다:
set empty_var [list]
2. lappend 명령어
lappend는 기존 리스트 변수에 하나 이상의 요소를 추가합니다.
2.1 기본 구문
lappend 변수명 값1 값2 ...
2.2 사용 예시
set fruits {apple banana}
lappend fruits cherry orange
puts $fruits # 출력: apple banana cherry orange
set numbers {}
lappend numbers 1 2 3
puts $numbers # 출력: 1 2 3
2.3 주요 특징
기존 변수의 값을 변경합니다.
변수가 존재하지 않으면 새로운 리스트를 생성합니다.
여러 요소를 한 번에 추가할 수 있습니다.
2.4 팁 💡
리스트에 요소를 추가할 때
lappend
를 사용하면concat
이나list
보다 효율적입니다.루프 내에서 리스트를 구축할 때 특히 유용합니다.
3. concat 명령어
concat은 주어진 인자들을 연결하여 하나의 리스트로 만듭니다.
3.1 기본 구문
concat ?인자1 인자2 ...?
3.2 사용 예시
set list1 {1 2 3}
set list2 {4 5 6}
set combined [concat $list1 $list2]
puts $combined # 출력: 1 2 3 4 5 6
set result [concat "Hello" {World} [list How are you?]]
puts $result # 출력: Hello World {How are you?}
3.3 주요 특징
리스트, 문자열, 숫자 등 다양한 타입의 인자를 연결할 수 있습니다.
리스트 인자의 가장 바깥쪽 중괄호를 제거하고 연결합니다.
결과는 항상 평면화된(flattened) 리스트입니다.
3.4 팁 💡
여러 리스트를 하나로 합칠 때 유용합니다.
join
과 달리 구분자를 사용하지 않고 연결합니다.
4. 명령어 비교
list: 각 인자를 개별 요소로 취급하여 리스트 생성
lappend: 기존 리스트에 요소 추가 (변수 수정)
concat: 인자들을 연결하여 새로운 리스트 생성 (평면화)
5. 복합 사용 예시
이 명령어들은 종종 함께 사용되어 복잡한 리스트 조작을 수행합니다:
# 중첩 리스트 생성 및 조작
set fruits [list apple banana]
set vegetables [list carrot potato]
set numbers [list 1 2 3]
set food_list [list $fruits $vegetables]
puts $food_list # 출력: {apple banana} {carrot potato}
lappend food_list $numbers
puts $food_list # 출력: {apple banana} {carrot potato} {1 2 3}
set flat_list [concat {prefix} $food_list {suffix}]
puts $flat_list # 출력: prefix apple banana carrot potato 1 2 3 suffix
6. 성능 고려사항 🚀
lappend
는 리스트 끝에 요소를 추가할 때 가장 효율적입니다.대량의 리스트를 연결할 때는
concat
보다lappend
를 반복 사용하는 것이 더 효율적일 수 있습니다.
Last updated