So I'm trying to implement a function ptt(L:List[int],k:int)
that returns a nested list containing partitions of L where each element of the list is itself a list containing exactly k elements (except the last partition which may have fewer than k elements). For example, when L = [1,2,3,4,5,6,7]
and k = 2
, partition(L, k)
returns [[1,2],[3,4],[5,6],[7]]
. Here are a few more examples.
assert ptt([1,2,3],2) == [[1,2],[3]]
assert ptt([1,2,3],3) == [[1,2,3]]
assert ptt([1,2,3,4],1) == [[1],[2],[3],[4]]
assert ptt([1,2,3,4],2) == [[1,2],[3,4]]
Here is my attempt at the code...
def ptt(L, k):
if (L == 0 or k == 0 or k > L):
return 0
if (k == 1 or k == L):
return 1
return (k * ptt(L - 1, k)
ptt(L - 1, k - 1))
However, this doesn't work at all... what changes to my code should I make to make sure it works??
CodePudding user response:
This code is very different from your approach, but it produces the result you're looking for:
def partition(nums, k):
result = []
for i in range(0, len(nums), k):
result.append(nums[i:i k])
return result
CodePudding user response:
Sorry this going to sound harsh, but since you are learning to program, you should learn to use your best resource on the internet...google searches. Most initial forays into programming tasks have already been solved (many times) and the solutions are readily available.
A simple query "partition a list to sublists python" yields several sources. Try: Split a python list into other "sublists" i.e smaller lists
The solution there is
chunks = [data[x:x k] for x in range(0, len(data), k)]