【问题标题】:Python initialize class with listPython用列表初始化类
【发布时间】:2019-12-26 00:16:14
【问题描述】:

我必须用列表初始化类,这将返回给定列表中的每个子列表。

我在将空列表定义为参数时遇到了问题:

class list():
def sublists(self, lst=[]):
    sub = [[]]
    for i in range(len(lst)+1):
        for j in range (i+1, len(lst)):
            sub = lst[i:j]
            sub.append(sub)
    return sub

【问题讨论】:

  • 为什么这必须是一个类?据我所知,它没有内部状态。此外,请注意可变的默认参数,尽管在这种情况下它不应该成为问题。无论如何,您的问题到底是什么?什么,究竟是你的问题?注意,不要使用 list 作为类的名称,这会影响内置名称 list
  • @poloOlo 你的目标是什么?您是否需要具有分层列表属性的类实例?或者您是否需要一个函数来将一些分层列表拆分为多个列表?
  • @juanpa.arrivillaga 我必须使用“课堂”,因为这是我的学校练习。当我试图用参数(exercise1 = list()exercise1.sublists(1,2,3 OR [1,2,3]))调用我的类时,在第一种情况下它向我显示一个错误 - “sublists() 需要从 1 到 2 个位置参数,但在第 2 个中给出了 4 个(在我将代码中的 'return' 更改为 'print' 之后)我有这个输出:[2, [...]]
  • @VictorDDT 我需要一个具有分层列表属性的类实例,并且需要使用列表初始化该类

标签: python list class initialization sublist


【解决方案1】:

正如其他人所指出的,您的意图从问题中不太清楚。我的理解是,您想获取给定列表的所有连续子列表。

这实现了。

class MyList:
    def sublists(self, lst=[]):
        subs = [[]]
        for i in range(len(lst)):
            for j in range (i+1, len(lst)+1):
                sub = lst[i:j]
                subs.append(sub)
        return subs

x = [i for i in range(3)]
my_list = MyList()
print(my_list.sublists(x))

如果您打算做其他事情,请更新您的问题。

【讨论】:

    【解决方案2】:

    如果我错了,请纠正我,但我想任务很简单。您可以使用列表初始化您的类实例:

    class list():
        sub = []
        def __init__(self, lst=[]):
            self.sub = lst
    
    a = [
    [1,2,3],
    [4,5,6],
    [7,8,9],
    ]
    
    myClass = list(a)
    
    print(myClass.sub)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-08
      • 1970-01-01
      • 2012-09-29
      • 2023-03-13
      • 2015-05-22
      相关资源
      最近更新 更多