【问题标题】:What changes to my code should I make so that my code would work?我应该对我的代码进行哪些更改才能使我的代码正常工作?
【发布时间】:2022-01-03 09:31:45
【问题描述】:

所以我正在尝试实现一个函数ptt(L:List[int],k:int),它返回一个嵌套列表,其中包含 L 的分区,其中列表的每个元素本身就是一个包含恰好 k 个元素的列表(除了最后一个可能少于 k 个元素的分区)。例如,当L = [1,2,3,4,5,6,7]k = 2 时,partition(L, k) 返回[[1,2],[3,4],[5,6],[7]]。这里还有几个例子。

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

这是我对代码的尝试...

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

但是,这根本不起作用...我应该对我的代码进行哪些更改以确保它起作用??

【问题讨论】:

  • 您应该首先向我们展示countP 是什么。
  • 如果L 是您在问题中描述的列表,那么L == 0k > LL - 1 之类的内容没有意义。
  • @MarkRansom 我的错,更改了函数名称,但没有更改其中的名称,顺便说一句已经编辑过
  • 运行代码时会发生什么?你有任何错误吗?如果是这样,我建议使用谷歌搜索错误消息以获取有关如何修复它的一些提示。如果不是,结果如何?如果你没有得到你想要的结果,那么你需要调试你的代码。 This article 有一些很棒的技巧可以帮助您入门。
  • 所以是递归函数?如果是这样,名称仍然是错误的。

标签: python list reference


【解决方案1】:

此代码与您的方法非常不同,但它会产生您正在寻找的结果:

def partition(nums, k):
    result = []
    for i in range(0, len(nums), k):
        result.append(nums[i:i+k])
    return result

【讨论】:

    【解决方案2】:

    抱歉,这听起来很刺耳,但由于您正在学习编程,因此您应该学会使用互联网上最好的资源...谷歌搜索。大多数对编程任务的初步尝试已经解决(很多次)并且解决方案很容易获得。

    一个简单的查询“将列表分区为 python 子列表”会产生多个来源。 尝试: Split a python list into other "sublists" i.e smaller lists

    解决办法

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-13
      • 1970-01-01
      • 2019-07-12
      • 1970-01-01
      • 1970-01-01
      • 2023-01-02
      • 2022-01-05
      相关资源
      最近更新 更多