[Swift] enumerated()

팔랑이·2024년 5월 20일
0

iOS/Swift

목록 보기
17/71
post-thumbnail

배열, 리스트 등 반복가능한 구조체에서 인덱스와 값을 함께 불러올 수 있게 해준다. 필요한 상황에서 계속 써서 좀 익혀야 할듯. 계속 까먹는다.


Swift에서의 enumerated()

Swift에서 enumerated()는 배열, 리스트 또는 다른 시퀀스 유형의 컬렉션에 사용됩니다. 이 메서드는 시퀀스의 각 요소를 인덱스와 함께 튜플 형태로 반환합니다. 결과는 (index, element) 형태의 튜플을 갖는 반복 가능한 시퀀스로, 이를 통해 for-in 루프에서 인덱스와 값을 동시에 사용할 수 있습니다.

Swift 예제:

let array = ["apple", "banana", "cherry"]
for (index, element) in array.enumerated() {
    print("Item \(index): \(element)")
}

위 코드는 배열의 각 요소와 그 인덱스를 출력합니다.

Python에서의 enumerate()

Python에서 enumerate() 함수는 iterable 객체(리스트, 튜플, 문자열 등)를 받아 각 요소를 인덱스와 함께 반환합니다. 이 역시 (index, element) 형태의 튜플을 갖는 반복 가능한 객체를 생성합니다. Python의 enumerate()는 시작 인덱스를 지정할 수 있는 선택적 매개변수 start를 제공하여, 인덱싱을 원하는 값에서 시작하게 할 수 있습니다.

Python 예제:

list = ["apple", "banana", "cherry"]
for index, element in enumerate(list):
    print(f"Item {index}: {element}")

위 코드는 Python 리스트의 각 요소와 그 인덱스를 출력합니다.

비교

  • 기능적 유사성: 두 언어 모두에서 enumerated()enumerate()는 컬렉션의 각 요소를 인덱스와 함께 처리할 수 있게 해줍니다.
  • 시작 인덱스: Python의 enumerate()start 매개변수를 통해 인덱스 시작 값을 조정할 수 있지만, Swift의 enumerated()는 항상 0부터 시작합니다.
  • 사용법: Python에서는 enumerate() 함수를 사용하고, Swift에서는 배열과 같은 시퀀스 유형의 메서드로 enumerated()를 사용합니다.

이처럼 두 언어에서 비슷한 구조를 가지고 있지만, Swift와 Python 각각의 특성에 맞게 조금씩 차이가 있습니다. 이를 이해하고 각 언어의 컨텍스트에 맞게 사용하는 것이 중요합니다.


물론 for in 사이에 들어가는 변수값은 바꿀 수 있다.

for (idx, i) in arr {
}

python은 괄호가 없는데 swift에서는 튜플처럼 괄호를 써줘야 함


+) 24.06.19 추가

.offset, .element를 통해 .enumerated()의 결과를 튜플 대신 명확한 구조로 사용할 수 있다.

예제

fruits = ["Apple", "Banana", "Cherry"]

for item in fruits.enumerated() {
    print("Offset: \(item.offset), Element: \(item.element)")
}

//Offset: 0, Element: Apple
//Offset: 1, Element: Banana
//Offset: 2, Element: Cherry

또한 클로저를 사용할 때 다음과 같이 접근할 수 있음.

let fruits = ["Apple", "Banana", "Cherry"]

let indexedFruits = fruits.enumerated().map {$0.offset, $1.element]}

print(indexedFruits)

//[[0, "Apple"], [1, "Banana"], [2, "Cherry"]]
profile
정체되지 않는 성장

0개의 댓글