-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path29_ntb_partitions.py
47 lines (35 loc) · 1.5 KB
/
29_ntb_partitions.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# -*- coding: utf-8 -*-
"""29-ntb_partitions.ipynb
Automatically generated by Colab.
Original file is located at
https://colab.research.google.com/drive/1BLnPyeZj8LpvEOtdrrRM7yOGnPYlu82j
Passos no código
- Cria uma lista de listas vazias para armazenar os dados particionados.
- Ordena os dados para garantir que os valores sejam distribuídos em faixas.
- Divide os dados em partições:
- Usa o tamanho da partição (partition_size) para calcular os índices de início e fim.
- Assegura que a última partição inclua quaisquer dados restantes.
"""
def range_partitioner(data, num_partitions):
"""
Divides data into partitions based on ranges.
Parameters:
- data (list): The data to be partitioned.
- num_partitions (int): The number of partitions.
Returns:
- list of lists: A list containing the partitioned data.
"""
partitions = [[] for _ in range(num_partitions)] # Initialize partitions
sorted_data = sorted(data) # Sort data for range partitioning
partition_size = len(data) // num_partitions
for i in range(num_partitions):
start_index = i * partition_size
# Include remaining data in the last partition
end_index = (i + 1) * partition_size if i < num_partitions - 1 else len(data)
partitions[i] = sorted_data[start_index:end_index]
return partitions
"""- Cria um lista de dados para testar"""
data = [10, 3, 7, 8, 2, 15, 5, 1]
num_partitions = 3
partitions = range_partitioner(data, num_partitions)
print(partitions)