python - 构造一个类来展平 python 列表

标签 python class object

我想构造一个类来展平Python列表。我可以通过定义这样的函数来实现它;

liste=[[1,2],3,[4],[[5],6]]

flatLIST=[]

def recur(a):

    if (type(a)==list):
        for i in a:
           recur(i)
    else:
        flatLIST.append(a)

recur(liste)
flatLIST

[1, 2, 3, 4, 5, 6]

但是当我无法通过构造类来实现它时。

class flatYVZ():

    def __init__(self,liste):
        self.flatLIST=[]
        recur(liste)

    def recur(self,a):

        if (type(a)==list):
            for i in a:
                recur(i)
        else:
            self.flatLIST.append(a)

    def flatting(self):        
        self.sonuc=self.flatLIST

example=[[1,2],3,[4],[[5],6]]
objec=flatYVZ(example)
objec.sonuc

[]

最佳答案

您需要引用self,否则您将调用之前定义的函数,而不是您的类方法。

这里需要将__init__recur(i)中的recur(liste)更改为self.recur(liste) recur(self, a) 中的 self.recur(i)

class flatYVZ():

    def __init__(self,liste):
        self.flatLIST=[]
        self.recur(liste)

    def recur(self,a):

        if (type(a)==list):
            for i in a:
                self.recur(i)
        else:
            self.flatLIST.append(a)

    def flatting(self):        
        self.sonuc=self.flatLIST

example=[[1,2],3,[4],[[5],6]]
objec=flatYVZ(example)
print(objec.flatLIST)

关于python - 构造一个类来展平 python 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53493815/

相关文章:

python - 如何更改pygame图标?

python - 在 Keras 中将 LSTM 与具有不同张量维度的 CNN 连接起来

python - 如何在 django_filters 中使用 ModelMultipleChoiceFilter 和 JSONfield

python - 难以理解 python 类中的控制流(在谷歌应用引擎中)

c++ - 从C使用C++对象

python - 我怎样才能让 django-rest-framework-jwt 在注册时返回 token ?

php - 检查类是否已实例化

c++ - 我可以在 C++ 中将类作为对象处理吗

javascript - JavaScript 中的对象和对象文字

javascript - 检查大量对象的碰撞 JS