携手创作,共同成长!这是我参与「掘金日新计划 · 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())
队列的代码学习较为简单。只要多体会其思想即可
===============================================================