배열(Array) 파헤치기!
1. 배열이란?
배열은 순서를 가지고, 같은 데이터 타입을 저장할 수 있는 컬렉션입니다.
배열 속에는 각 순번이 있고, 이것을 Index(인덱스)라고 합니다.
배열의 인덱스를 통해서 각각 요소들에게 접근할 수 있다.
그리고 배열안의 인덱스는 0부터 시작한다. (컴퓨터가 0부터 시작하기 때문에)
var 배열 = [4, 3, 2, 1]
이 배열 속에서 인덱스를 표현한다면 0-> 4, 1-> 3, 2-> 2, 3-> 1으로 표현할 수 있다.
Array 배열 생성
1. let 배열 : [Int] = [1, 2, 3, 4]
2.let 배열1 : Array<Int> = [5, 6, 7, 8]
print(배열, 배열1)=[1, 2, 3, 4] [5, 6, 7, 8]
배열을 생성하는방법입니다. [데이터 타입] 형태와 Array<데이터타입>이 있습니다.
간단한 1번 방법을 많이 사용합니다. let을 사용하여 배열을 만들었기때문에
배열 내용에 추가 제거 를 진행할 수 없습니다. (var 배열로 진행시 가능)
let 배열 : [] = 상수형 배열 var 배열 : [] = 변수형 배열
var 배열 = [Int] (repeating: 1, count: 5)
print(배열)=[1, 1, 1, 1, 1]
고정된 수의 기본값으로 미리 초기화된 배열이 필요한경우 Array(repeating:Int count:Int)를
이용하여 만들 수 있습니다. repeating 값으로 count 만큼의 배열의 초기화된 상태로 만들어진다.
배열의 범위
var arr = Array(1...3)
print(arr) /=[1, 2, 3]
결과값 1...3 -> 1에서부터 3까지 출력 해준다는것을 의미한다.
배열 추가 하기
var 배열 : [Int] = [1, 2, 3, 4]
배열.append(5)
배열.append(contentsOf: [6, 7])
배열 += [8, 9]
print(배열)=[1, 2, 3, 4, 5, 6, 7, 8, 9]
위 내용과 같이 append, append(contentsOf:[], += 모두 배열에 추가 할 수 있습니다.
var 배열 : [Int] = [1, 2, 3, 4]
배열.insert(5, at: 0) //= [5, 1, 2, 3, 4]
insert 함수를 통해서 해당 배열의 인덱스 위치에 요소를 추가할 수 도 있습니다.at:인덱스 원하는 곳에 입력하면 5를 추가 할 수 있다.
배열 요소 삭제하기
var 배열 : [Int] = [1, 2, 3, 4]
배열.remove(at: 0)
print(배열)=[2, 3, 4]
remove 함수를 사용하여 인덱스 0번째인 1의 값을 삭제 한다.그리하여 결과값이 [2, 3, 4]로 나타 난다.
배열 범위 선정하여 범위 만큼 인덱스값 삭제 하기
var 배열 : [Int] = [1, 2, 3, 4, 5]
배열.removeSubrange(0...1)
print(배열)=[3, 4, 5]
removeSubrange()함수의 0...1 를 적용하여 배열의 인덱스 0번과 1번 자리의 1,2를 제외하고 출력한다.
배열 맨 끝의 값을 지우고 출력하기
var arr = [1, 2, 3, 4]
arr.removeLast()
print(arr) /=[1, 2, 3]
배열의 끝 값을 지우고 출력한다.
배열접근하기
var 배열 : [Int] = [1, 2, 3, 4, 5]
let 배열1 = 배열[0]
// 1
let 배열2 = 배열[1]
// 2
let 배열4 = 배열[4]
// 5
배열 안에 있는 요소에 접근하는 방법 입니다.
배열 뒤집기
var 배열 : [Int] = [1, 2, 3, 4]
배열.reversed()
배열 = 배열.reversed()
배열의 순서을 뒤 바꿔주는 함수 이다.
배열의 오름차순 // 내림차순 함수
var 배열 : [Int] = [1, 2, 3, 4]
// 오름차순
배열.sort()
배열.sort(by: <)
배열 = 배열.sorted(by: <)
// 내림차순
배열.sort(by: >)
배열 = 배열.sorted(by: >)
배열의 원소 모두를 인트로 변환
map (String 값을 Int 로 변환 한다.)
var arrSt = ["1", "2", "3", "4"]
var arrInt = arrSt.map { Int($0)! }
print(arrInt)/=[1, 2, 3, 4]
배열안의 스트링으로 표현한 ["1", "2"] 의 값들을 [1, 2] 인트값으로 변환이 가능하다.
{$0} 이라는게 모든 원소의 값이다?
배열의 조건식에 참인 원소만 필터링(출력한다.)
var arr = [1, 2, 3, 4, 5]
var arrtr = arr.filter { $0 % 2 == 0 }
var arrfa = arr.filter { $0 % 2 == 1 }
print("arrtr의값\(arrtr), arrfa의값\(arrfa)")
arrtr의값[1, 4, 5], arrfa의값[]
모든 원소를 더하기
var arr = [1, 2, 3, 4, 5]
var arrp = arr.reduce(0, +)
print(arrp)/=15
배열 순회하기
순회하며 원소 참조 하기
var arr = [1, 2, 3, 4, 5]
for n in arr {
print(n)
} n의 값은 1\2\3\4\5 가 나타난다.
arr 의 값을 반복한다 n 에 넣어서 말이다
배열을 순회하며 "원소"와 "인덱스"참조 하기 enumerated()
var arr = [1, 2, 3, 4, 5]
for (index, value) in arr.enumerated() {
print("\(index), \(value)")
} index 의값출력 - 0\1\2\3\4 (배열의 순서는 0부터 시작한다(컴터의시작은0))
value 의값출력 - 1\2\3\4\5 (배열의 값은 1...5 라서 1부터 시작한다.)
인덱스로 순회 하기
인덱스값으로 순회 하여 값을 알아본다.
var arr = [1, 2, 3, 4, 5]
for i in 0..<arr.count {
print(arr[i])
}/1,2,3,4,5
for i in arr.indices {
print("2번 for문 \(arr[i])")
}/2번 for문 1,2,3,4,5
위 2개의 for 문 같다.
1번째 for의 print() 값은 1,2,3,4,5 가 나타난다.
2번째 for의 print() 값에서도 1,2,3,4,5 가 나타난다.
역순으로 순회하기
var arr = [1, 2, 3, 4, 5]
for i in (0..<arr.count).reversed() {
print(arr[i])
}/5,4,3,2,1
for i in arr.indices.reversed() {
print("2번 for문 \(arr[i])")
}/2번 for문 5,4,3,2,1
위와 같이 for의 내용은 같다. 여기서 역순으로 불러올 함수만 추가했다.
.reversed() 이 함수로 인해 결과값이 역순으로 나타 날 수 있게 되었다.
배열을 거꾸로 출력하기 revesed()
var arr = [1, 2, 3, 4, 5]
var aarr = arr.reversed()
for n in aarr {
print(n)
}/= 5,4,3,2,1
제곱근 sqrt()
var a = sqrt(4.0)
print(a) 결과 : 2.0
거듭 제곱 pow()
var a = pow(4.0, 3.0) 4의 3승 4^3 이다.
print(a) 결과 64.0