软件测试必会

数据结构学习_ python常用数据结构

2018-04-02  本文已影响68人  Ghost_3538

数据结构种类


从数据存储结构上分以下几类:

不涉及元素如何存储,元素之间如何关联,讲究功能方面的特点,功能性数据结构:


python 里面数据类型:

在Python中, Queue的主要任务是用于线程之间的通信, 而不是作为一种数据结构.
如果你需要链表, 那就使用deque, 他的底层实现是链表,既可以作为栈使用,也可以作为队列使用

# coding=utf-8
from multiprocessing import Queue, Process
from Queue import Empty as QueueEmpty
import random


def getter(name, queue):
    print 'Son process %s' % name
    while True:
        try:
            value = queue.get(True, 10)
            # block为True,就是如果队列中无数据了。
            #   |—————— 若timeout默认是None,那么会一直等待下去。
            #   |—————— 若timeout设置了时间,那么会等待timeout秒后才会抛出Queue.Empty异常
            # block 为False,如果队列中无数据,就抛出Queue.Empty异常
            print "Process getter get: %f" % value
        except QueueEmpty:
            break


def putter(name, queue):
    print "Son process %s" % name
    for i in range(0, 1000):
        value = random.random()
        queue.put(value)
        # 放入数据 put(obj[, block[, timeout]])
        # 若block为True,如队列是满的:
        #  |—————— 若timeout是默认None,那么就会一直等下去
        #  |—————— 若timeout设置了等待时间,那么会等待timeout秒后,如果还是满的,那么就抛出Queue.Full.
        # 若block是False,如果队列满了,直接抛出Queue.Full
        print "Process putter put: %f" % value


if __name__ == '__main__':
    queue = Queue()
    getter_process = Process(target=getter, args=("Getter", queue))
    putter_process = Process(target=putter, args=("Putter", queue))
    getter_process.start()
    putter_process.start()

数组和链表:

数组 : 各元素内存存储在一块
链表: 各元素分开存,并存储指向下一个元素地址

索引操作:  数组 O(1) 链表 O(n)
插入和删除操作: 数组 O(n) 链表O(1)

线性表数据结构,python 数据类型


支持元素两端插入和删除,采用双链表技术实现
同时也涵盖队列的功能,也可以将其作为队列使用

</article>

上一篇 下一篇

猜你喜欢

热点阅读