Python记录

news/2024/9/24 10:49:15/

1.冒泡排序

时间复杂度O(n^2)  选择、插入都是

python">def bubble(data, reverse):for i in range(len(data)-1):for j in range(len(data)-i-1):if data[j] > data[j+1]:data[j], data[j+1] = data[j+1], data[j]if reverse:data.reverse()return data

2.快速排序

时间复杂度O(nlog⁡n)

思路先选择一个pivot,然后左右两个指针,不断向中间比较,如果碰到不符合的就交换,直到两个指针位置相等,然后返回相等位置作为分割点,之后利用递归不断进行排序。

python">#快速排序
def parition(arr, low, high):pivot = arr[low]while low < high:while low < high and arr[high] >= pivot:high -= 1arr[low], arr[high] = arr[high], arr[low]while low < high and arr[low] <= pivot:low+=1arr[low], arr[high] = arr[high], arr[low]return lowdef quick_sort(arr, low, high):if low < high:pivot = parition(arr, low, high)quick_sort(arr, low, pivot-1)quick_sort(arr, pivot+1, high)return arrlist = [8, 5, 1, 3, 2, 10, 11, 4, 12, 20]
arr = quick_sort(list, 0, len(list)-1)
print(arr)

3.requests介绍,发起HTTP请求的 强大类库,调用简单,功能强大。

requests 是一个用于发送 HTTP 请求的 Python 库,被广泛用于网络请求、数据抓取、API 调用等任务。它以简单、直观的方式让开发者能够方便地进行各种类型的 HTTP 请求(如 GET、POST、PUT、DELETE 等),并处理服务器返回的响应数据。

3. 读取键盘输入

python">def forinput():input_text = input()

4.enumerate

内置函数,用于将一个可遍历的数据对象(如列表,元组,或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for循环中;

python">for counter, value in enumerate(some_list):print(counter, value)

5.正则表达式 re模块

正则表达式(Regular Expression,简称 regex)是一种用于模式匹配和文本处理的强大工具。在 Python 中,通过 re 模块使用正则表达式,可以进行字符串查找、匹配、替换等操作。以下是正则表达式中常用符号和它们的具体用法:

cat log.txt | sort | uniq -c | sort -nr | head -n 5

  • cat log.txt 将文件内容输出到管道。
  • sort 排序,为 uniq 统计相同行做准备。
  • uniq -c 统计每行出现次数。
  • sort -nr 按次数排序,从多到少。
  • head -n 5 显示前 5 行结果。

6.字典转json字符串

python">dict1 = {'name': '萝卜', 'age': 18}
dict1_new = json.dumps(dict1)
print(dict1_new)
{"name": "\u841d\u535c", "age": 18}
  • {"name": "\u841d\u535c", "age": 18} 是字典转换后的 JSON 字符串。
  • \u841d\u535c萝卜 这个字符串的 Unicode 转义表示。它们对应的汉字是 ,在 JSON 格式中,汉字会被转换为 Unicode 转义序列以确保兼容性。
  • 总结

  • 这段代码的作用是将一个 Python 字典转换为 JSON 字符串,以便于数据交换、存储等。
  • 输出的字符串可以被解析回 Python 字典,也可以被其他编程语言理解,因为 JSON 是一种通用的数据格式。

7.继承

一个类继承自另一个类,可以说是一个子类、派生类,继承自父类、基类

同时获得所有的类成员。继承是我们可以重用代码,还可以更好创建和维护代码;

python支持的继承:

  • 单继承:一个子类类继承自单个基类
  • 多重继承:一个子类继承自多个基类
  • 多级继承:一个子类继承自一个基类,而基类继承自另一个基类
  • 分层继承:多个子类继承自同一个基类
  • 混合继承:两种或两种以上继承类型的组合

8.tuple和list转换

python">>>> tuple1 = (1, 2, 3, 4)
>>> list1 = list(tuple1)
>>> print(list1)
>>> tuple2 = tuple(list1)
>>> print(tuple2)

9.Python 的断言就是检测一个条件,如果条件为真,它什么都不做;反之它触发一个带可选错误信息的 AssertionError

10.异步非阻塞

同步异步指的是调用者和被调度用者关系

所谓同步,就是发出一个功能调用时,在没有得到结果之前,该调用不会返回,一旦调用返回就得到了结果;

异步和同步相对,调用发出之后就直接返回了,所以没有返回结果,当该异步功能完成后,被调用者可以通过状态、通知或回调来通知调用者;

阻塞非阻塞是线程或进程之间的关系。

阻塞调用是指调用结果返回之前,当前线程会被挂起(如遇到io操作)。调用线程只有在得到结果之后才会返回。函数只有在得到结果之后才会将阻塞的线程激活


非阻塞和阻塞的概念相对应,非阻塞调用指在不能立刻得到结果之前也会立刻返回,同时该函数不会阻塞当前线程

总结

  • 同步 vs 异步:同步等待任务完成才继续,异步不等待任务完成就继续。
  • 阻塞 vs 非阻塞:阻塞会暂停线程等待任务完成,非阻塞不会暂停线程,会继续执行。

11.删除操作系统上的文件

python">>>> f = open('test.txt', 'w') # f 文件对象
>>> f.close()
>>> os.listdir() # 当前目录下文件
['.idea','test.txt','__pycache__']>>> os.remove('test.txt')
>>> os.listdir()
['.idea','__pycache__']

12.简述logging模块

python内置标准模块,主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等;相比print,具备如下优点:

  • 可以通过设置不同的日志等级,在 release 版本中只输出重要信息,而不必显示大量的调试信息
  • print 将所有信息都输出到标准输出中,严重影响开发者从标准输出中查看其它数据;logging 则可以由开发者决定将信息输出到什么地方,以及怎么输出。

13.字符串字符出现个数

python">>>> from collections import Counter
>>> str1 = "nihsasehndciswemeotpxc"
>>> print(Counter(str1))
Counter({'s': 3, 'e': 3, 'n': 2, 'i': 2, 'h': 2, 'c': 2, 'a': 1, 'd': 1, 'w': 1, 'm': 1, 'o': 1, 't': 1, 'p': 1, 'x': 1})

14. re.compile

python">import re# 编译正则表达式,匹配数字
pattern = re.compile(r'\d+')# 使用编译后的正则表达式对象进行查找
text = "The numbers are 123, 456, and 789."
matches = pattern.findall(text)print(matches)  # 输出 ['123', '456', '789']
  • re.compile() 将正则表达式编译成对象,便于高效、可读地执行多次匹配操作。
  • 编译后的对象包含丰富的方法,可以灵活地进行各种正则操作,提高代码的性能和组织性。

15. 捕获异常

16.反转列表,一道题目leetcode,不使用额外空间

import datetime

def dayofyear():
    year = input("请输入年份: ")
    month = input("请输入月份: ")
    day = input("请输入天: ")
    date1 = datetime.date(year=int(year), month=int(month), day=int(day))
    date2 = datetime.date(year=int(year), month=1, day=1)
    return (date1 - date2).days + 1

>>> dayofyear()
请输入年份: >? 2022
请输入月份: >? 5
请输入天: >? 23
143

 


http://www.ppmy.cn/news/1529780.html

相关文章

vue中高德地图使用 Marker 标点 - 标点数据快到 1000 时页面卡顿问题解决(已解决 - 多方面原因)+ 海量点功能实现解决

目录 1.业务需求2.最初实现及出现的问题3.解决 - 1000 个标点时页面就出现 卡顿 问题4.使用海量点、聚合标点后还有卡顿&#xff0c;排查其他原因5.最终解决5.1页面中list数据渲染问题解决5.2地图相关实例不要放在 vue 的可响应数据中 页面展示 1.业务需求 需要在 高德地图 中标…

nodejs安装

下载安装包 https://nodejs.cn/download/ 配置环境变量&#xff1a; PATH编辑-新建- D:\node-v20.17.0 检测安装是否成功&#xff1a; npm -v 设置缓存与包安装位置 在nodejs安装目录下新建缓存与模块安装位置node_cache 、node_modules 更改全局模块路径&#xff1a; 运…

Parallels Desktop 20 for Mac 推出:完美兼容 macOS Sequoia 与 Win11 24H2

Parallels Desktop 20 for Mac 近日正式发布&#xff0c;这一新版本不仅全面支持 macOS Sequoia 和 Windows 11 24H2&#xff0c;还在企业版中引入了一个全新的管理门户。新版本针对 Windows、macOS 和 Linux 虚拟机进行了多项改进&#xff0c;其中最引人注目的当属 Parallels …

shell linux cut 切割字符串

shell linux 切割字符串 在Shell脚本中&#xff0c;可以使用内置的cut命令来切割字符串。cut命令主要有三个选项 -c、-f和-d&#xff0c;分别表示按字符、按字段和指定分隔符来切割字符串。 按字符切割&#xff1a; echo "Hello World" | cut -c 1-5 # 输出&#…

开源模型应用落地-Qwen2.5-Coder模型小试-码无止境(一)

一、前言 代码专家模型是一种基于人工智能的先进技术&#xff0c;旨在自动分析和理解大量代码库&#xff0c;并从中学习常见的编码模式和最佳实践。这种模型通过深度学习和自然语言处理&#xff0c;能够提供准确而高效的代码建议&#xff0c;帮助开发人员在编写代码时有效地避免…

新版本大疆上云API指令飞行(drc)模式通讯搭建思路

一、大疆上云API mqtt官方通讯指导 1.1drc链路 1.2mqtt交互时序图 二、自行搭建mqtt说明 2.1工具&#xff1a;用emqx搭建mqtt服务器&#xff0c;mqttx作为客户端测试工具 2.2端口说明&#xff1a;1883&#xff0c;普通mqtt消息端口&#xff0c;8083&#xff0c;ws通信协议端…

路由基础--路由引入

路由引入的主要作用是实现路由信息在不同路由协议之间的传递和学习。在大型企业网络中&#xff0c;多种路由协议共存是常态&#xff0c;为了实现全网互通&#xff0c;需要通过路由引入来传递路由信息。此外&#xff0c;执行路由引入时还可以部署路由控制&#xff0c;从而实现对…

Java项目实战II基于Java+Spring Boot+MySQL的读书笔记共享平台(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、论文参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在信息爆炸…