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()
posted @ 2020-11-26 10:32  AlenDou  阅读(93)  评论(0编辑  收藏  举报