xml地图|网站地图|网站标签 [设为首页] [加入收藏]

【皇家88娱乐平台】保存最后N个元素的方法,根

来源:http://www.ccidsi.com 作者:集成介绍 人气:78 发布时间:2019-12-17
摘要:Python cookbook(数据构造与算法)保存最终N个要素的格局,pythoncookbook 正文实例叙述了Python保存最终N个因素的主意。分享给大家供大家参考,具体如下: 皇家88娱乐平台,问题: 指望在

Python cookbook(数据构造与算法)保存最终N个要素的格局,pythoncookbook

正文实例叙述了Python保存最终N个因素的主意。分享给大家供大家参考,具体如下:

皇家88娱乐平台,问题:指望在迭代或是其余格局的管理进度中对最后几项记录做三个零星的历史记录总结

施工方案:选择collections.deque。

平时来说的代码对一五光十色文本行做轻松的文件相称操作,当开采有卓越时就输出当前的相称行以致最终检查过的N行文本:

from collections import deque
def search(lines, pattern, history=5):
  previous_lines = deque(maxlen=history)
  for line in lines:
    if pattern in line:
      yield line, previous_lines
    previous_lines.append(line)
# Example use on a file
if __name__ == '__main__':
  with open('somefile.txt') as f:
    for line, prevlines in search(f, 'python', 5):
      for pline in prevlines:
        print(pline, end='')
      print(line, end='')
      print('-'*20)

皇家88娱乐平台 1

正如上面的代码相符,当编辑寻觅某项记录的代码时,常常会用到含有yield关键字的生成器函数,将拍卖寻觅进度的代码与运用搜索结果的代码解耦开来。具体生成器可参照他事他说加以考查本站迭代器和生成器相关内容。

deque(maxlen=N)创造一个定位长度的队列,当走入新因素而队列已满时会自动移除最老的那条记下:

>>> from collections import deque
>>> q=deque(maxlen=3)
>>> q.append(1)
>>> q.append(2)
>>> q.append(3)
>>> q
deque([1, 2, 3], maxlen=3)
>>> q.append(4)
>>> q
deque([2, 3, 4], maxlen=3)
>>> q.append(5)
>>> q
deque([3, 4, 5], maxlen=3)
>>>

就算能够在列表上手动完毕如此的操作(append、del),但队列的这种技术方案要高贵得多,运营速度也快得多。

如若不钦命队列长度,则拿到二个无界限的体系,可在相互推行增多和弹出操作:

>>> q=deque()
>>> q
deque([])
>>> q.append(1)
>>> q.append(2)
>>> q.append(3)
>>> q
deque([1, 2, 3])
>>> q.appendleft(4)
>>> q
deque([4, 1, 2, 3])
>>> q.pop()
3
>>> q
deque([4, 1, 2])
>>> q.popleft()
4
>>> q
deque([1, 2])
>>>

越来越多关于Python相关内容感兴趣的读者可查阅本站专项论题:《Python数据构造与算法教程》、《Python加密解密算法与技艺总计》、《Python编码操作手艺总括》、《Python函数使用本事总计》、《Python字符串操作能力汇总》及《Python入门与进级精华教程》

仰望本文所述对大家Python程序设计有着协助。

cookbook(数据布局与算法)保存最后N个因素的法子,pythoncookbook 本文实例陈述了Python保存最终N个要素的点子。分享给大家供我们仿照效法...

正文实例陈述了Python依据字段将记录分组操作。分享给大家供我们参考,具体如下:

问题:想依据字典只怕指标实例的某部特定的字典(例如日期)来分组迭代数据

技术方案:itertools.groupby()函数在对数码进行分组时特意有用(前提是先以目的字典进行排序)

rows = [
  {'address': '5412 N CLARK', 'date': '07/01/2012'},
  {'address': '5148 N CLARK', 'date': '07/04/2012'},
  {'address': '5800 E 58TH', 'date': '07/02/2012'},
  {'address': '2122 N CLARK', 'date': '07/03/2012'},
  {'address': '5645 N RAVENSWOOD', 'date': '07/02/2012'},
  {'address': '1060 W ADDISON', 'date': '07/02/2012'},
  {'address': '4801 N BROADWAY', 'date': '07/01/2012'},
  {'address': '1039 W GRANVILLE', 'date': '07/04/2012'},
]
from operator import itemgetter
from itertools import groupby
rows.sort(key=itemgetter('date')) #首先以date字段进行排序
for date, items in groupby(rows, key=itemgetter('date')): #再以date进行分组
  print(date)
  for i in items:
    print('  ', i)
# 如果只是简单地根据日期将数据分组到一起,放进一个大的数据结构中以允许进行随机访问,那么可以利用defaultdict构建一个一键多值的字典会更好
#Example of building a multidict
from collections import defaultdict
rows_by_date = defaultdict(list) #创建一个一键多值的字典,
for row in rows:
  rows_by_date[row['date']].append(row)
for r in rows_by_date['07/01/2012']:
  print(r)

运营结果:

本文由68399皇家赌场发布于集成介绍,转载请注明出处:【皇家88娱乐平台】保存最后N个元素的方法,根

关键词: 68399皇家赌场