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