记录从准研一假期自学PYTHON的全过程day12

61 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天,点击查看活动详情

也是暑假自学python的第12天

eval()函数

eval()函数将字符串变成有效的表达式来求值并返回计算结果。

在测试的时候首先创建一个network这样一个文本文件,我们将其写为字典模式:

{
    'IP':'192.168.1.2'
    'ROOT':2000
}

但是此时的类型为str类型:

f = open('network', 'r+', encoding='utf8')
print(f.read())
print(type(f.read()))

输出结果为:

{

'IP':'192.168.1.2'

'ROOT':2000

}

<class 'str'>

我们可以使用eval()将其转化为字典:

f = open('network', 'r+', encoding='utf8')


net_info = eval(f.read())
print(net_info)

文件stat方法

文件stat方法用于对文件进行查看,可以查看文件的所有属性,需要导入import包:

import os

file_info = os.stat('test.txt')
print('size{},uid{},mode{},mtime{}'.format(file_info.st_size, file_info.st_uid, \
                                           file_info.st_mode, file_info.st_mtime))

上面的方法可以用来换行,防止一行太长难以阅读

stat含有很多个方法,可以在学习时查阅相关文档。

队列

队列在学习数据结构中就很清楚,是一个先进先出的结构,循环队列就是将最后一个尾指针指向第一个头指针。

双端队列deque

队列中对collections接口进行了学习,使用到了deque容器,deque相当于list的队列。

双端队列对于list实现队列有一些弊端,最好使用deque

双端队列可以从左边操作也可以从右边操作

对deque的浅用:(与list相似)

from collections import deque

queue = deque(['Elln', 'Jone', 'Million'])
queue.append('angle')
print(queue)
print(queue.popleft())  # 左边删除
print(queue.pop())      # 右边删除不是popright,而是直接pop方法
print(queue)

queue[0] = 'zhangsan'
print(queue)

在学习过程中:首先学习了循环队列:

这里学习到了循环队列的写法:面向对象来写。

写一个最大容量max_size,前指针front与尾指针rear:

每次在入队时判断队满,出队时判断队空,这种思想在数据结构中也都学过:

class circle_queue():
    def __init__(self, max_size):
        self.max_size = max_size
        self.arr = [0] * max_size
        self.front = 0
        self.rear = 0

    def enqueue(self, element):
        if (self.rear + 1) % self.max_size == self.front:
            print("队列满")
            return False
        self.arr[self.rear] = element
        self.rear = (self.rear + 1) % self.max_size
        return True

    def dequeue(self):
        if self.rear == self.front:
            print('队列为空')
            return False
        element = self.arr[self.front]
        self.front = (self.rear + 1) % self.max_size
        return element


if __name__ == '__main__':
    
    c = circle_queue(5)

    c.enqueue(1)
    c.enqueue(2)
    c.enqueue(3)
    c.enqueue(4)
    # c.enqueue(5)
    print(c.dequeue())

队列的代码学习较为简单。只要多体会其思想即可

===============================================================