swift

스위프트 배열에 원소 삽입, 제거, 찾기, 포함

ag2개발자 2022. 2. 7. 01:17

스위프트 언어의 문법은 파이썬 언어라고 발표 초창기에 알려졌었다고 할 정도로

스위프트의 문법은 파이썬과 비슷한 부분이 많다.

 

 

값 삽입

배열에 원소를 삽입할 때는 어떨까?

 

배열의 맨 뒤에 값을 추가하는 방법으로는 append(_:)를 사용한다.

이는 파이썬과 동일함으로 생략하겠다.

 

배열의 특정 위치에 값을 삽입하고 싶을 경우에는 insert(_:at:)을 사용하고 예를 살펴보면

 

먼저 파이썬의 경우

a = [1, 2, 3]
a.insert(0,0)
print(a)   # [0, 1, 2, 3] 0번째 인덱스에 0 삽입

스위프트의 경우

var a = [1, 2, 3]
a.insert(0, at:0)
print(a)

가 같은 코드가 되겠다.

 

한번에 여러 요소들을 한꺼번에 삽입하고 싶을 때는 append(contentsOf:)를 사용한다.

 

스위프트:

var a = [1, 2, 3]
var b = [4, 5, 6]
a.append(contentsOf: b)
print(a)   //[1, 2, 3, 4, 5, 6]

 

값 제거

값을 제거할때는 remove(at:)를 이용한다.

var a = [1, 2, 3]
a.remove(at:2)
print(a)   // [1, 2]

첫번째 값을 제거하고 싶을 때는 removeFirst(), 마지막 값을 제거하고 싶을때는 removeLast()를 사용한다.

인자값으로 점프할 인덱스 값(Int)을 넣을 수 있다.

배열의 맨 앞 또는 맨 뒤에서부터 몇 칸 띄운 값을 지우겠다는 의미이다.

예시는 생략하겠다.

 

마지막 값을 제거하는 방법으로는 popLast()도 있다. 마지막 값(Optional)을 반환하면서 제거한다.

빈 배열일 경우 nil을 반환하고 앞의 예시와 달리 에러가 발생하지 않는다.

 

특정 범위를 제거하고 싶을 때는 removeSubrange(_:) 제거하고 싶은 인덱스 범위를 입력하면 된다.

var a = [1, 2, 3, 4, 5]
a.removeSubrange(1..<3)
print(a)   //[1, 4, 5]

 

dropFirst(_:), dropLast(_:)를 사용하면 기존 배열은 그대로 두고,

기존 배열에서 앞 또는 뒤에서 몇개의 값을 제거한 새로운 배열을 반환한다.

 

 

 

값의 인덱스 찾기

배열에서 찾으려는 값의 인덱스를 얻고 싶을 때는 firstIndex(of:)를 사용한다. Optional Int 형태를 반환한다.

배열에서 찾고자 하는 값이 여러개일 경우, 가장 앞에 있는 값의 인덱스를 반환한다.

해당하는 값이 없을 때는, nil을 반환한다. 

var a = [1,2,3,4,4,3,2,1]
print(a.firstIndex(of: 4)) // Optional(3)

 

찾고자 하는 값의 마지막 인덱스를 찾고 싶을 때는 lastIndex(of:)를 사용한다.

 

 

특정 값 포함여부

특정 값을 포함하는지 알고 싶을때는 contains()를 이용한다.

var a = [1, 2, 3, 4, 5]
print(a.contains(4)) // true

count로는 배열의 개수를, count의 개수가 0이거나 isEmpty를 이용해서 빈 배열인지 알 수 있다.

 

 

'swift' 카테고리의 다른 글

스위프트의 배열과 문자열 꿀팁들  (0) 2022.02.07
Swift 고차함수 Map, Filter, Reduce  (0) 2022.02.05
스위프트 for문  (0) 2022.02.03
스위프트 배열과 enumerated()  (0) 2022.02.03
swift String.Index  (0) 2022.02.03