Python语言
Python之禅
import this
常用计算
a ** 2 # 乘方计算
a % 2 # 求模
a // 2 # 求商
bin() # 返回一个整数的二进制表示字符串 bin(10)='0b1010'
float('inf') # 正无穷
float('-inf') # 负无穷
# zip
a = [1, 2, 3]
b = [4, 5, 6, 7, 8]
for t in zip(a, b):
print(t) # (1, 4), (2, 5), (3, 6)
for t in zip_longest(a, b, fillvalue=0):
print(t) # (1, 4), (2, 5), (3, 6), (0, 7), (0, 8)
字符串
ord('a') # asc编码
chr('50') # asc编码
name = 'ross geller'
name.title() # 单词首字母大写
name.upper() # 字符全大写
name.lower() # 字符全小写
name.isdigit() # 判断字符串是否全由数字组成
a = ' hello '
a = '\nhello\n'
a.lstrip() # 去除掉字符串左端空白
a.rstrip() # 去除掉字符串右端空白
a.strip() # 去除掉字符串两端空白
# 子串
'abc' in 'abcabc' # True 判断子串是否存在
'abcabc'.find('abc') # 子串出现第一次的首字符位置 不存在返回-1
'abcabc'.rfind('abc') # 子串出现最后一次的首字符位置 不存在返回-1
s = 'abc'
list(s) = ['a', 'b', 'c']
s.join(sequence) # 用于将序列中的字符以指定的字符连接成一个新字符串
''.join(['a', 'b', 'c']) # 'abc'
'-'.join(['a', 'b', 'c']) # 'a-b-c'
列表
a = [0, 1, 2]
a[-1] # 最后一个元素
# 列表插入和删除
a.append(3) # 在列表末尾添加元素
a.insert(index, 3) # 在索引index处插入元素3
del a[index] # 删除索引处的元素
a.pop() # 删除并返回最后一个元素
a.pop(index) # 删除并返回索引处的元素
a.remove(value) # 根据键值删除元素 只删除第一个出现的
# 列表排序
a.sort() # 列表永久性排序
a.sort(reverse=True) # 列表永久性排序 倒序
sorted(a) # 列表临时排序
sorted(a, reverse=True) # 列表临时排序 倒序
a.reverse() # 永久反转列表的排列顺序
range(a, b, stride=1) # a到b-1 步长为stride
list(range(a, b)) # 转换为列表
min(a) # 列表最小值
max(a) # 列表最大值
sum(a) # 列表求和
a = [i**2 for i in range(1, 11)] # 列表解析 用来简洁地生成列表
a[i:j] # 列表切片 i到j-1
# 复制列表
b = a # 两个变量指向同一个列表
b = a[:] # 复制列表副本
字典
a = {key: value}
del a[key] # 删除键值对
a = {
'cat': 1,
'dog': 2,
'bird': 3,
} # 字典声明格式
# 遍历字典
for key, value in a.items():
print(key, value)
for key in a.keys():
print(key)
for key in a.keys():
print(key)
a.keys() # 返回一个键的列表
a.values() # 返回一个值的列表
set(a.values()) # 去重
a = sorted(a.items(), key=lambda d:d[0]) # 按照键进行排序 输出是列表
a = sorted(a.items(), key=lambda d:d[1]) # 按照值进行排序 输出是列表
集合
# 声明集合
a = set([1,2,3])
a = {1,2,3}
a = a & b # 集合交
a = a | b # 集合并
a = a - b # 集合补
a.add(4) # 添加元素
a.remove(4) # 删除元素
if语句
a = []
if a: # 空列表为False
pass
用户输入
message = input('Please input your name: ')
函数
def func(a): # a为形参
print(a)
b = 0
func(b) # b为实参 位置实参
func(a=b) # b为关键字实参
# 传递任意数量实参
def func(*a): # a为一个元组
for i in a:
print(a)
def func(a, *b): # 结合使用位置实参和任意数量实参
pass
def func(a, **b): # b为一个字典 使用任意数量的关键字实参
pass
# 函数的导入
import module_name
module_name.function_name()
from module_name import function_name
from module_name import function_0, function_1, function_2
from module_name import function_name as fn
import module_name as mn
from module_name import *
堆
堆是二叉树,最大堆父节点大于或等于两个子节点,最小堆父节点小于或等于两个子节点。
import heapq
# 创建堆
nums = [1, 2, 3, 4, 5]
# 元组也可以比较大小 所以建堆的元素也可以是元组
nums = [(0, 1), (2, 3), (4, 5)]
heap = []
for num in nums:
heapq.heappush(heap, num)
print(heap[0]) # 只是获得最小值而不弹出
print(heapq.heappop(heap))
# 另一种创建方式
heapq.heapify(nums)
print(heapq.heappop(nums))
heapq.heapreplace(nums, 23) # 弹出最小值并添加23
collections
from collections import Counter # 计数器
c = Counter(['a', 'b', 'c', 'a'])
c = Counter(u + v for u in A for v in B)
print(dict(c))
from collections import deque # 队列
queue = deque()
queue.append(x)
queue.pop() # 弹出最右边
queue.popleft() # 弹出最左边
if not queue:
print('Empty')
from collections import defaultdict
d = defaultdict(list) # 不会出现key missing error 默认是一个列表
for i in foo:
print(type(d[i])) # list
bisect
import bisect
a = [1, 2, 2, 3]
bisect.bisect_left(a, 2) # 1 返回第一个大于等于2的数字的位置
bisect.bisect_right(a, 2) # 3 返回第一个大于2的数字的位置
sortedcontainers
import sortedcontainers
sorted_list = sortedcontainers.SortedList()
sorted_dict = sortedcontainers.SortedDict()
sorted_set = sortedcontainers.SortedSet()