Range Over Built in Prolog

Range over Built-in Types

range iterates over elements in a variety of built-in data structures. Let’s see how to use range with some of the data structures we’ve already learned.

Summing numbers in a list

Here we use for to sum the numbers in a list. Arrays work like this too.

nums = [2, 3, 4]
sum = 0
for num in nums:
    sum += num
print("sum:", sum)

for on lists provides both the index and value for each entry. Above we didn’t need the index, so we just iterated directly over the values. Sometimes we actually want the indexes though.

for i, num in enumerate(nums):
    if num == 3:
        print("index:", i)

Iterating over key/value pairs in dictionaries

for on dictionaries iterates over key/value pairs.

kvs = {"a": "apple", "b": "banana"}
for k, v in kvs.items():
    print(f"{k} -> {v}")

Iterating over just the keys of a dictionary

for can also iterate over just the keys of a dictionary.

for k in kvs:
    print("key:", k)

Iterating over characters in a string

for on strings iterates over Unicode code points. The first value is the starting byte index of the character and the second the character itself.

for i, c in enumerate("go"):
    print(i, ord(c))  # ord() gives the Unicode code point of the character

Expected Output

$ python range_over_built_in_types.py
sum: 9
index: 1
a -> apple
b -> banana
key: a
key: b
0 103
1 111