集合类型 #
一、列表 (List) #
1.1 创建列表 #
mojo
def main():
let empty_list = List[Int]()
let numbers = List[Int](1, 2, 3, 4, 5)
let mixed = [1, 2, 3, 4, 5]
print(len(numbers))
print(len(mixed))
main()
1.2 访问元素 #
mojo
def main():
let fruits = ["apple", "banana", "orange"]
print(fruits[0])
print(fruits[1])
print(fruits[-1])
main()
1.3 列表切片 #
mojo
def main():
let numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(numbers[0:3])
print(numbers[5:])
print(numbers[:5])
print(numbers[::2])
print(numbers[::-1])
main()
1.4 修改列表 #
mojo
def main():
var numbers = [1, 2, 3]
numbers.append(4)
print(numbers)
numbers.extend([5, 6])
print(numbers)
numbers.insert(0, 0)
print(numbers)
main()
1.5 删除元素 #
mojo
def main():
var numbers = [1, 2, 3, 4, 5]
numbers.pop()
print(numbers)
numbers.pop(0)
print(numbers)
numbers.remove(3)
print(numbers)
main()
1.6 列表方法 #
mojo
def main():
var numbers = [3, 1, 4, 1, 5, 9, 2, 6]
numbers.sort()
print(numbers)
numbers.reverse()
print(numbers)
print(numbers.index(5))
print(numbers.count(1))
main()
1.7 列表推导式 #
mojo
def main():
let squares = [x * x for x in range(10)]
print(squares)
let evens = [x for x in range(20) if x % 2 == 0]
print(evens)
main()
二、字典 (Dict) #
2.1 创建字典 #
mojo
def main():
let empty_dict = Dict[String, Int]()
let scores = {"Alice": 95, "Bob": 87, "Charlie": 92}
print(len(scores))
main()
2.2 访问元素 #
mojo
def main():
let scores = {"Alice": 95, "Bob": 87}
print(scores["Alice"])
print(scores.get("Bob"))
print(scores.get("Charlie", 0))
main()
2.3 修改字典 #
mojo
def main():
var scores = {"Alice": 95}
scores["Bob"] = 87
print(scores)
scores["Alice"] = 98
print(scores)
scores.update({"Charlie": 92, "David": 88})
print(scores)
main()
2.4 删除元素 #
mojo
def main():
var scores = {"Alice": 95, "Bob": 87, "Charlie": 92}
del scores["Bob"]
print(scores)
let value = scores.pop("Alice")
print(value)
print(scores)
main()
2.5 遍历字典 #
mojo
def main():
let scores = {"Alice": 95, "Bob": 87, "Charlie": 92}
for key in scores.keys():
print(key)
for value in scores.values():
print(value)
for key, value in scores.items():
print(f"{key}: {value}")
main()
2.6 字典推导式 #
mojo
def main():
let squares = {x: x * x for x in range(5)}
print(squares)
main()
三、集合 (Set) #
3.1 创建集合 #
mojo
def main():
let empty_set = Set[Int]()
let numbers = {1, 2, 3, 4, 5}
print(len(numbers))
main()
3.2 集合操作 #
mojo
def main():
var numbers = {1, 2, 3}
numbers.add(4)
print(numbers)
numbers.remove(1)
print(numbers)
numbers.discard(10)
main()
3.3 集合运算 #
mojo
def main():
let a = {1, 2, 3, 4}
let b = {3, 4, 5, 6}
print(a | b)
print(a & b)
print(a - b)
print(a ^ b)
main()
3.4 集合判断 #
mojo
def main():
let a = {1, 2, 3}
let b = {1, 2}
print(b.issubset(a))
print(a.issuperset(b))
print(a.isdisjoint({4, 5}))
main()
四、元组 (Tuple) #
4.1 创建元组 #
mojo
def main():
let point = (10, 20)
let person = ("Alice", 30, "Engineer")
let single = (42,)
print(point)
print(person)
print(single)
main()
4.2 访问元组 #
mojo
def main():
let person = ("Alice", 30, "Engineer")
print(person[0])
print(person[1])
print(person[-1])
main()
4.3 元组解包 #
mojo
def main():
let point = (10, 20)
let x, y = point
print(x)
print(y)
main()
4.4 命名元组 #
mojo
struct Point:
var x: Int
var y: Int
fn __init__(inout self, x: Int, y: Int):
self.x = x
self.y = y
def main():
let p = Point(10, 20)
print(p.x, p.y)
main()
五、范围 (Range) #
5.1 创建范围 #
mojo
def main():
let r1 = range(5)
let r2 = range(2, 8)
let r3 = range(0, 10, 2)
for i in r1:
print(i)
for i in r3:
print(i)
main()
5.2 范围属性 #
mojo
def main():
let r = range(2, 10, 2)
print(r.start)
print(r.stop)
print(r.step)
print(len(r))
main()
六、迭代器 #
6.1 基本迭代 #
mojo
def main():
let numbers = [1, 2, 3, 4, 5]
for num in numbers:
print(num)
main()
6.2 枚举 #
mojo
def main():
let fruits = ["apple", "banana", "orange"]
for index, fruit in enumerate(fruits):
print(f"{index}: {fruit}")
main()
6.3 并行迭代 #
mojo
def main():
let names = ["Alice", "Bob", "Charlie"]
let ages = [25, 30, 35]
for name, age in zip(names, ages):
print(f"{name} is {age} years old")
main()
七、集合性能 #
7.1 时间复杂度 #
| 操作 | List | Dict | Set |
|---|---|---|---|
| 访问 | O(1) | O(1) | - |
| 查找 | O(n) | O(1) | O(1) |
| 插入 | O(n) | O(1) | O(1) |
| 删除 | O(n) | O(1) | O(1) |
7.2 选择指南 #
- List:有序数据,频繁索引访问
- Dict:键值对映射,快速查找
- Set:去重,集合运算
- Tuple:不可变数据
八、总结 #
本章学习了:
- 列表的创建与操作
- 字典的键值映射
- 集合的运算
- 元组的不可变性
- 范围与迭代器
- 性能考量
下一章,我们将学习控制流。
最后更新:2026-03-27