Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用类或内置结构实现数据结构更好吗?_Python_Data Structures - Fatal编程技术网

Python 使用类或内置结构实现数据结构更好吗?

Python 使用类或内置结构实现数据结构更好吗?,python,data-structures,Python,Data Structures,我正在学习数据结构,有一个问题。在我阅读的教科书中,它们展示了一个堆栈的实现,如下所示: class Stack: def __init__(self): self.items = [] def isEmpty(self): return self.items == [] def push(self, item): self.items.append(item) def pop(self):

我正在学习数据结构,有一个问题。在我阅读的教科书中,它们展示了一个堆栈的实现,如下所示:

class Stack:
     def __init__(self):
         self.items = []

     def isEmpty(self):
         return self.items == []

     def push(self, item):
         self.items.append(item)

     def pop(self):
         return self.items.pop()

     def peek(self):
         return self.items[len(self.items)-1]

     def size(self):
         return len(self.items)
我不需要创建一个全新的类?为什么他们不能创建这样的堆栈:

myStack = []

>>> myStack.append('a')
>>> myStack.append('b')
>>> myStack.append('c')

>>> myStack
['a', 'b', 'c']

>>> myStack.pop()
'c'
>>> myStack.pop()
'b'
>>> myStack.pop()
'a'
它更快还是更通用?我想了解其中的区别,以便在需要时能够决定如何实施


谢谢大家!

这只是一个基本示例,让您了解如何实现自己的数据结构。列表已经可以用作堆栈了,但是对于更复杂的数据结构来说,没有任何内置的数据结构可以这么好地工作。

内置数据结构(如
list
)几乎总是比用Python编写的任何数据结构都要快。这个
Stack
的实现使用了一个列表作为堆栈,因此只会增加额外的开销


如果一个数据结构没有内置到Python中,并且不是由标准库提供的,那么您必须创建一个类。如果内置数据结构不提供所需的方法(如
peek
),则可以创建一个类。

对于堆栈,可以使用
list
对象,因为它已经实现了所有堆栈方法,但一般情况下,可以使用类。尽管如此,即使是在堆栈的情况下,这也允许您在需要时更改实现。