简体   繁体   中英

What changes to my code should I make so that my code would work?

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??

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" ie smaller lists

The solution there is

chunks = [data[x:x+k] for x in range(0, len(data), k)]

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM