Python HowTos

1.统计字符串中每个字符的个数

  1. str 内置 count 方法
s = 'abcdabc'
print(s.count('a'))

>>> 2
  1. collections 模块中的 Counter
from collections import Counter
s = 'abcdabc'
cnt = Counter(s)
print(cnt['a'])

>>> 2
  1. 正则表达式匹配
import re
count = len(re.findall('a', 'abcdabc'))
print(count)

>>> 2

2.Python 写入文件时有中文出现乱码问题的解决

打开文件的时候指定 encoding 参数即可

with open("index.text", "w", encoding="utf-8") as f:
    f.write("我今年十八岁")

另外 str 也有 encode decode 方法

3.Python 获取对象的大小

使用 sys.getsizeof()

不过因为 python 中的对象其实都是类,就连字符串也不例外,所所以很多时候这一方法就显得不那么尽如人意了

那么要获取字符串的大小,对于一般无中文的字符串,使用 len() 函数即可,返回的长度即字符串占用的内存(仅仅是字符串,不包括类代码),如果有中文,中文占用 3或4 个字节(utf-8),情况就变得复杂起来了。

4.Python 中实现栈与队列

collections 模块中 有 deque 可以轻松模拟 stack 和 queue,实际上 Python 中也有专门的队列和栈的模块。

queue 模块中的 Queue 就是一个 FIFO 的数据结构也即 queue,常用方法

  • class queue.Queue(maxsize=0) 构造函数
  • Queue.qsize() 返回 队列 size 的估计
  • Queue.empty() 判断是否为空
  • Queue.full() 判断是否为满
  • Queue.put(item, block=True, timeout=None) 入队
  • Queue.get(block=True, timeout=None) 移除队头元素并返回此元素

可能 stack 真的没有必要用什么模块去实现了,因为 list 就有 pop 和 append 方法,这和 stack 是完全一样的。