Bird
Raised Fist0
Swiftprogramming~5 mins

Collection slicing and indices in Swift

Choose your learning style10 modes available
Introduction
Collection slicing lets you take a part of a list or array easily. Indices help you find and use positions inside collections.
You want to get a few items from a list without copying the whole list.
You need to check or change items between two positions in a collection.
You want to loop over just a part of a collection.
You want to find the position of an item to use it later.
You want to safely access elements without errors by using indices.
Syntax
Swift
let slice = collection[startIndex..<endIndex]
let index = collection.index(after: someIndex)
let element = collection[index]
Use startIndex and endIndex to define the slice range.
Indices are used to access or move through collection elements safely.
Examples
This gets elements from position 1 up to (but not including) 4, so 20, 30, 40.
Swift
let numbers = [10, 20, 30, 40, 50]
let slice = numbers[1..<4]
print(slice)
Finds the index after the first and prints the element at that position, which is 'b'.
Swift
let letters = ["a", "b", "c", "d"]
let start = letters.startIndex
let next = letters.index(after: start)
print(letters[next])
Loops over the middle elements, skipping the first and last.
Swift
let words = ["apple", "banana", "cherry", "date"]
let range = words.indices.dropFirst().dropLast()
for i in range {
  print(words[i])
}
Sample Program
This code slices the fruits array from position 1 to 3 and prints each fruit in that slice.
Swift
let fruits = ["apple", "banana", "cherry", "date", "elderberry"]
let start = fruits.index(fruits.startIndex, offsetBy: 1)
let end = fruits.index(fruits.startIndex, offsetBy: 4)
let slice = fruits[start..<end]
for fruit in slice {
  print(fruit)
}
OutputSuccess
Important Notes
Slicing a collection does not copy elements; it creates a view into the original collection.
Always ensure your indices are valid to avoid runtime errors.
Use index(after:) or index(before:) to move safely through indices.
Summary
Collection slicing extracts parts of a collection using index ranges.
Indices help you find and access elements safely.
Use slicing and indices to work efficiently with parts of collections.

Practice

(1/5)
1. What does collection slicing in Swift allow you to do?
let numbers = [10, 20, 30, 40, 50]
For example, numbers[1...3] returns which part of the array?
easy
A. A part of the collection from index 1 to 3 inclusive
B. The entire collection reversed
C. Only the first element of the collection
D. An error because slicing is not allowed

Solution

  1. Step 1: Understand collection slicing syntax

    The syntax numbers[1...3] means take elements from index 1 to index 3, including both ends.
  2. Step 2: Identify the elements in the slice

    Indexes 1, 2, and 3 correspond to values 20, 30, and 40 respectively.
  3. Final Answer:

    A part of the collection from index 1 to 3 inclusive -> Option A
  4. Quick Check:

    Slice [1...3] = [20, 30, 40] [OK]
Hint: Remember slicing uses inclusive ranges [OK]
Common Mistakes:
  • Thinking slicing returns a single element
  • Assuming slicing reverses the collection
  • Believing slicing causes an error
2. Which of the following is the correct syntax to slice a Swift array named items from index 2 to 5 (inclusive)?
easy
A. items[2..<5]
B. items.slice(2, 5)
C. items[2...5]
D. items[2,5]

Solution

  1. Step 1: Understand Swift range operators

    The closed range operator ... includes both start and end indexes, so 2...5 means indexes 2, 3, 4, and 5.
  2. Step 2: Evaluate the slicing syntaxes

    items[2..<5] uses half-open range which excludes index 5. items.slice(2, 5) calls a non-existent method. items[2,5] is invalid syntax. items[2...5] is correct.
  3. Final Answer:

    items[2...5] -> Option C
  4. Quick Check:

    Closed range includes end index [OK]
Hint: Use ... for inclusive slicing in Swift [OK]
Common Mistakes:
  • Using half-open range when inclusive is needed
  • Using comma inside brackets incorrectly
  • Trying to call slice() method which doesn't exist
3. Given the Swift array:
let fruits = ["apple", "banana", "cherry", "date", "fig"]
What is the output of this code?
let slice = fruits[1..<4]
print(slice)
medium
A. ["banana", "cherry", "date"]
B. ["banana", "cherry", "date", "fig"]
C. ["banana", "cherry"]
D. Runtime error

Solution

  1. Step 1: Understand half-open range slicing

    The range 1..<4 includes indexes 1, 2, and 3 but excludes 4.
  2. Step 2: Identify elements at these indexes

    Indexes 1, 2, 3 correspond to "banana", "cherry", and "date".
  3. Final Answer:

    ["banana", "cherry", "date"] -> Option A
  4. Quick Check:

    Half-open range excludes last index [OK]
Hint: ..< excludes the upper bound index [OK]
Common Mistakes:
  • Including the element at index 4 mistakenly
  • Confusing half-open with closed range
  • Expecting a runtime error for valid slice
4. Consider this Swift code:
let letters = ["a", "b", "c", "d"]
let slice = letters[1...4]

What is the problem with this code?
medium
A. Slicing syntax is incorrect, should use parentheses
B. Index 4 is out of range causing a runtime error
C. Slice returns an empty array
D. No problem, code runs fine

Solution

  1. Step 1: Check array bounds

    The array has indexes 0 to 3. Index 4 does not exist.
  2. Step 2: Understand slicing with out-of-bounds index

    Using 1...4 tries to access index 4, which causes a runtime error.
  3. Final Answer:

    Index 4 is out of range causing a runtime error -> Option B
  4. Quick Check:

    Accessing invalid index causes error [OK]
Hint: Check array size before slicing [OK]
Common Mistakes:
  • Assuming slicing auto-adjusts out-of-range indexes
  • Thinking syntax is wrong instead of index error
  • Expecting empty slice instead of error
5. You have a Swift array:
let data = [5, 10, 15, 20, 25, 30]
You want to create a slice that includes every element except the first and last. Which code correctly creates this slice?
hard
A. let slice = data[1..
B. let slice = data[1...data.count-1]
C. let slice = data[1...data.count]
D. let slice = data[1..

Solution

  1. Step 1: Determine indexes to include

    Exclude first (index 0) and last (index 5) elements, so include indexes 1 to 4.
  2. Step 2: Use half-open range for slicing

    Using 1.. means indexes 1 up to but not including 5, which is indexes 1 to 4.
  3. Final Answer:

    let slice = data[1.. -> Option D
  4. Quick Check:

    Half-open range excludes last index [OK]
Hint: Use half-open range to exclude last index [OK]
Common Mistakes:
  • Using closed range which includes the last index
  • Using count directly as upper bound causing out-of-range
  • Confusing inclusive and exclusive ranges
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard