python 笔记

本文深入探讨Python中的数据结构操作与算法实现,包括排序、集合、双端队列、堆等核心概念,以及如何利用这些工具进行高效的数据处理。文章通过具体代码示例,如使用sorted函数进行排序、deque的插入与删除操作、heapq模块的堆操作等,展示了Python编程中数据结构和算法的实际应用。
摘要由CSDN通过智能技术生成

 排序

s = 'aaabbc'
set(s)
# {'a', 'b', 'c'}
sorted((s.count(x), x) for x in set(s))
# [(1, 'c'), (2, 'b'), (3, 'a')]

# 排序后索引
>>> lis = [1,2,3,0,1,9,8]
>>> sorted(range(len(lis)), key=lambda k: lis[k])
[3, 0, 4, 1, 2, 6, 5]

deque 

import collections
deque = collections.deque([1,2,3])
deque.append(4)
a = deque.popleft()

heap

# 若item为list或tuple,依次比较item中的每个元素
import heapq
heap = []            # creates an empty heap
heapq.heappush(heap, item) # pushes a new item on the heap
item = heapq.heappop(heap) # pops the smallest item from the heap
item = heap[0]       # smallest item on the heap without popping it
heapq.heapify(heap)           # transforms list into a heap, in-place, in linear time
item = heapq.heapreplace(heap, item) # pops and returns smallest item, and adds
                               # new item; the heap size is unchanged
_heappop_max(heap)
_heapreplace_max(heap, item)
_heapify_max(x)

ascii

chr(97)  # 'a'
ord('a') # 97

二进制

# https://www.cnblogs.com/renke123/p/11029906.html
int('0b1010',2) 
int('1010',2) # 10  
bin(10) # '0b1010'

当前路径

import os, sys
sys.path # list, python环境路径,import路径,自动加入当前.py所在的文件夹路径(第一个元素)
os.getcwd() # 运行命令时的cd路径

静态方法:无法访问类属性、实例属性,相当于一个相对独立的方法,跟类其实没什么关系,换个角度来讲,其实就是放在一个类的作用域里的函数而已。

类成员方法:可以访问类属性,无法访问实例属性。上述的变量val1,在类里是类变量,在实例中又是实例变量,所以容易混淆。

class MyClass:
    val1 = 'Value 1'
    def __init__(self):
        self.val2 = 'Value 2'

    @staticmethod
    def staticmd():
        print '静态方法,无法访问val1和val2'

    @classmethod
    def classmd(cls):
        print '类方法,类:' + str(cls) + ',val1:' + cls.val1 + ',无法访问val2的值'

global、nonlocal

num = 1
def fun1():
    global num  # 需要使用 global 关键字声明
    print(num) 
    num = 123
    print(num)
fun1()
print(num)

out:
1
123
123

def fun():
    num = 1
    def outer():
        num = 10
        def inner():
            nonlocal num   # nonlocal关键字声明
            num = 100
            print(num)

        inner()
        print(num)

    outer()
    print(num)
fun()

out:
100
100
1

 自定义排序

a = [1,2,4,3,5]
def compare_personal(x,y):
    pass
a.sort(key= functools.cmp_to_key(compare_personal))
c = sorted(b, key=functools.cmp_to_key(compare_personal))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值