diff options
Diffstat (limited to 'wqflask/wqflask/my_pylmm/pyLMM/chunk_test.py')
-rw-r--r-- | wqflask/wqflask/my_pylmm/pyLMM/chunk_test.py | 57 |
1 files changed, 23 insertions, 34 deletions
diff --git a/wqflask/wqflask/my_pylmm/pyLMM/chunk_test.py b/wqflask/wqflask/my_pylmm/pyLMM/chunk_test.py index 58900778..4c34080c 100644 --- a/wqflask/wqflask/my_pylmm/pyLMM/chunk_test.py +++ b/wqflask/wqflask/my_pylmm/pyLMM/chunk_test.py @@ -2,27 +2,29 @@ from __future__ import absolute_import, print_function, division import math import time -import collections -""" -558 exact out of 1000 [Total amount off: 1580] -""" - - -def zach_divide_into_chunks(the_list, number_chunks): +def divide_into_chunks(the_list, number_chunks): + """Divides a list into approximately number_chunks smaller lists + + >>> divide_into_chunks([1, 2, 7, 3, 22, 8, 5, 22, 333], 3) + [[1, 2, 7], [3, 22, 8], [5, 22, 333]] + >>> divide_into_chunks([1, 2, 7, 3, 22, 8, 5, 22, 333], 4) + [[1, 2, 7], [3, 22, 8], [5, 22, 333]] + >>> divide_into_chunks([1, 2, 7, 3, 22, 8, 5, 22, 333], 5) + [[1, 2], [7, 3], [22, 8], [5, 22], [333]] + >>> + + """ length = len(the_list) + if length == 0: return [[]] - - if number_chunks > length: + + if length <= number_chunks: number_chunks = length chunksize = int(math.ceil(length / number_chunks)) - #if length % number_chunks > 0: - # chunksize += 1 - # while (chunksize * number_chunks) > length: - # number_chunks -= 1 chunks = [] for counter in range(0, length, chunksize): @@ -30,24 +32,6 @@ def zach_divide_into_chunks(the_list, number_chunks): return chunks - -def sam_divide_into_chunks(the_list, number_chunks): - length = len(the_list) - - if length == 0: - return [[]] - else: - if length <= number_chunks: - number_chunks = length - - chunksize = int(math.ceil(length / number_chunks)) - - chunks = [] - for counter in range(0, length, chunksize): - chunks.append(the_list[counter:counter+chunksize]) - - return chunks - def confirm_chunk(original, result): all_chunked = [] for chunk in result: @@ -86,13 +70,15 @@ def chunk_test(divide_func): print("\n{} exact out of {} [Total amount off: {}]".format(number_exact, test, total_amount_off)) - + assert number_exact == 558 + assert total_amount_off == 1580 return number_exact, total_amount_off def main(): info = dict() - funcs = (("sam", sam_divide_into_chunks), ("zach", zach_divide_into_chunks)) + #funcs = (("sam", sam_divide_into_chunks), ("zach", zach_divide_into_chunks)) + funcs = (("only one", divide_into_chunks),) for name, func in funcs: start = time.time() number_exact, total_amount_off = chunk_test(func) @@ -104,4 +90,7 @@ def main(): print("info is:", info) if __name__ == '__main__': - main()
\ No newline at end of file + main() + print("\nConfirming doctests...") + import doctest + doctest.testmod()
\ No newline at end of file |