python基础知识总结

一、Python数据结构
不可变数据结构(3 个):Number(整数)、String(字符串)、Tuple(元组)
可变数据结构(3 个):List(列表)、Dictionary(字典)、Set(集合)
Python 支持三种不同的数值类型:整型(int)、浮点型(float)、复数(complex)
Python不同于其它语言,只有一种类型int,不区分short、int、long类型;浮点数只有一种类型float,不区分float与double类型
1.1 列表
list = [‘red’, ‘green’, ‘blue’, ‘yellow’, ‘white’, ‘black’]
list列表反转方法:
第一种,是可以通过倒序切片反转,然后步长是 -1,;
第二种,是可以通过列表的方式,列表有一个方法叫做 reverse ,可以实现反转
列表切片:
“切片”操作用于从某个对象中抽取部分值的情况。
理论上,只要条件表达式得当,可以通过单次或多次切片操作实现任意目标值切取
索引方式:object[start_index:end_index:step]

start_index:表示起始索引(包含该索引对应值)

end_index:表示终止索引(不包含该索引对应值)

step:正负数均可,其绝对值大小决定了切取数据时的"步长"

例:List = [0,1,2,3,4,5,6,7,8,9]
一个完整的切片表达式包含两个“:”,用于分隔三个参数(start_index:end_index:step)

a[-1:-6:-1]
[9, 8, 7, 6, 5]
//step=-1,start_index=-1到end_index=-6是从右往左取值
b = a[::2]
//从最开始的值取到最后的值,步长为2:[0, 2, 4, 6, 8]
当只有一个“:”时:默认第三个参数step=1
a[6:]
[6, 7, 8, 9]
//step=1,从左往右取值,从start_index=6开始,一直取到“终点”值9。
当一个“:”也没有时,start_index=end_index,表示切取start_index指定的那个元素
1.2 元组
tuple = (‘Google’, ‘Runoob’, 1997, 2000)
1.3 字典
d = {key1 : value1, key2 : value2, key3 : value3 }
tinydict = {‘name’: ‘runoob’, ‘likes’: 123, ‘url’: ‘www.runoob.com’}
1.4 集合
集合set是一个无序的不重复元素序列
parame = {value01,value02,…}
set(value)
区别:列表可以修改,而字符串和元组不能
二、Python输入输出
input() 函数接受一个标准输入数据,返回为 string 类型
注意:input语句输入的内容只能是字符串类型,如果需要输入Int类型的数据,需要使用int()方法给输入的内容制作强制类型转换
a = input(“请输入一个整数:”)
print函数可以输出的内容:
print(520) //数字
print(“helloworld”) //字符串
print(3+1) //表达式
文件输出
fp=open(‘D:/text.txt’,‘a+’)
print(‘helloworld’,file=fp)
fp.close()
print() 输出的形式:
print(“helloworld”) //换行输出;
print(‘hello’,‘world’,‘python’) //逗号分隔不换行
三、Python函数
函数与方法
函数(function)是Python中一个可调用对象,而方法(method)是一种特殊的函数
自定义函数
#计算面积函数
def area(width,height)
return width * height
不带表达式的return相当于返回 None
系统函数
list()
用于将其他序列转换为列表
range()
可创建一个整数列表,一般用在 for 循环中
range(10)

从 0 开始的十个数字 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

range(1, 11)

从 1 开始到 11(不包含11)

// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

range(0, 30, 5)

步长为 5 [0, 5, 10, 15, 20, 25]

join()
用于将序列中的元素以指定的字符连接生成一个新的字符串
num2 = [‘4’, ‘2’, ‘4’, ‘2’, ‘3’, ‘2’, ‘1’]
print(‘’.join(num2))
#将列表num2转化为字符串,输出4242321
匿名函数
Python 中定义匿名函数非常简单,通过 lambda 表达式来定义就可以了;
lambda 表达式的基本句法是:lambda 空格 然后加上函数的参数,接下来在冒号后面跟上函数的返回值;,在lambda 函数中不能有return, 因为:后面就是返回值
例:

c = lambda x,y=2: x+y #使用了默认值
c(10) #不输入数据的话,使用默认值2
12
函数参数定义
函数的参数定义方式有三种:必传参数、默认参数、可变长参数
函数重载机制
函数重载主要是为了解决两个问题:第一个,是可变参数类型,第二个,是可变参数个数;
在 Python 当中参数不需要申明类型,函数是可以接受任何类型的参数的;如果函数的功能相同,一个函数就可以处理了;
在 Python 当中通过 一个 * 号 和 两个 ** 号 来处理可变参数个数;所以在 Python 里面他不需要处理函数重载;
四、数据结构
顺序
有序序列包括:列表,元组,字符串 (list,tuple,string)
无序序列:字典,集合 (dictionary,set )(python3.6的版本显示出来的字典是有序的)
重复
列表和元组的元素可以重复
集合是一个无序不重复元素集
字典的键是不能重复的,值可以重复
是否可变
元组是有序不可修改的,是只读的,不能修改,一旦创建就固定了
更改列表数据类型
要将列表的数据类型进行更改,可以使用tuple()或者set()
is和==
==比较两个对象或值的相等性。
is运算符用于检查两个对象是否属于同一内存对象。
五、垃圾回收
Python垃圾回收机制主要以引用计数为主,分代回收为辅。
Python 中一切皆对象,引用计数法的原理是每个对象维护一个引用计数,用来记录当前对象被引用的次数,当这个对象的引用计数(指针数)为 0 的时候,说明这个对象永不可达,自然它也就成为了垃圾,需要被回收。
匿名函数lambda
Lambda函数是不带名称的单行函数,可以具有n个参数,但只能有一个表达式。也称为匿名函数。
a = lambda x, y:x + y
print(a(5, 6))
11
五、Python语句
1,分支选择语句
switch语句是实现多分支选择功能,根据列表值测试变量。
switch语句中的每个值都被称为一个case。
在Python中,没有内置switch函数,但是我们可以创建一个自定义的switch语句。
装饰器
python装饰器本质上是一个函数,装饰器的返回值也是一个函数对象。。它封装一个函数,并且使用不同的操作方式来修改这个被封装函数的行为。让其他函数在不需要做任何代码变动的前提下增加额外功能,他们有助于让我们的代码更简短。
装饰器用于以下场景:插入日志(统计函数执行时间)、权限校验、性能测试、事务处理、缓存等场景
三方库和模块
1,python造数
使用python三方库:Faker
Faker 是一个生成伪造数据的 Python 库,Faker 数据通常用于测试或用一些伪数据填充数据库。
Python-OOPS
面向对象编程:抽象(Abstraction)、封装(Encapsulation)、继承(Inheritance)、多态(Polymorphism)
类和对象
在Python中为类创建一个对象,例如:obj = num()
使用类的对象,我们可以访问类的所有成员,并对其进行操作。
继承
继承允许一个类获取另一个类的所有成员和属性。继承提供代码可重用性,可以更轻松地创建和维护应用程序。被继承的类称为超类,而继承的类称为派生类/子类。
过滤器
用过滤器可以筛选字典中,大于某个阈值的项 当我们处理一些数据时,常常需要对数据进行筛选、转换等操作,过滤器很好用
迭代器
迭代器(iterator)是一种可以记住遍历对象位置的对象
对于序列的数据结构我们可以使用iter()方法创建迭代器
之后调用next()函数进行迭代输出
生成器
使用了 yield(产出) 的函数被称为生成器(generator)。
跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器
调用生成器的主要目的是节省存储空间,假如我们需要打印一个含有1000个有规律的元素列表,如果我们创建了这个列表,那么将会占用很大的空间,使用生成器时仅会保存当前的运行信息,并在下次执行时从当前位置开始执行,节省了空间
常用函数
1,增加元素
append:在列表末尾添加新元素。
insert:在列表的特定位置添加元素。
extend:通过添加新列表来扩展列表。
2,删除元素
remove:将删除列表中的第一个匹配值,它以值作为参数。
del:使用索引删除元素,它不返回任何值。
pop:将删除列表中顶部的元素,并返回列表的顶部元素。
3,split()函数
Python中,split函数的基本用法是将字符串按照指定的规则或者要求进行分割,并返回list值
4,map()函数
map() 会根据提供的函数对指定序列做映射。
Python 2.x 返回列表。
Python 3.x 返回迭代器。
高频编程题
(简单)反转Python字符串
1,使用索引切片
切片(slice)是对序列型对象(如list, string, tuple)的一种高级索引方法
string = ‘hello’
string[::-1]
‘olleh’
2,使用reverse()函数
(简单) 给你一个随机字符串,统计它的长度
如果想要动态获取用户输入的字符串长度,可以使用input( )函数来获取用户输入的字符串。示例代码如下:
random_str = input("Please enter a random string: ")
length = len(random_str)
print(“The length of the string is:”, length)
(一般) 给你一个随机字符串,统计里面大小写字母出现的次数

随机字符串

random_str = “AbcDeFgHijklMNOpqRstUVWXYZtuvwxyz”

统计大写字母和小写字母的数量

upper_count = 0
lower_count = 0

遍历字符串中的每个字符

for char in random_str:

如果是大写字母,则将大写字母数量加1

if char.isupper():
upper_count += 1

如果是小写字母,则将小写字母数量加1

elif char.islower():
lower_count += 1

输出结果

print(“The number of uppercase letters is:”, upper_count)
print(“The number of lowercase letters is:”, lower_count)
其中,random_str是一个随机字符串,isupper()方法可以判断一个字符是否为大写字母,islower()方法可以判断一个字符是否为小写字母。通过遍历字符串中的每个字符,可以统计大写字母和小写字母的数量,最后使用print()函数输出结果。
编写程序,查找文本文件中最长的单词
def longest_word(filename):
with open(filename, ‘r’) as infile:
words = infile.read().split()
max_len = len(max(words, key=len))
return [word for word in words
if len(word) == max_len]print(longest_word(‘test.txt’))

[‘comprehensions’]
编写程序,检查序列是否为回文
a = input(“Enter The sequence”)
ispalindrome = a == a[::-1]
ispalindrome
True
六,面试常见问题总结
(难) Python怎么解析日志文件,说说用到的库和思路
解析日志文件是软件测试和故障排查中的常见操作。
通常的思路是:读取日志文件,对每一行数据进行解析和处理,然后对所需的信息进行保存或者展示。在处理过程中应该考虑到数据结构和复杂度,以及代码的可重用性和可维护性等问题。
.re(正则表达式):通常情况下,日志文件都有特定的格式,使用re库可以方便地从日志文件中提取出所需的信息。例如,使用re.findall()方法可以根据正则表达式匹配日志行,并从中提取出关键信息。
.Pandas:Pandas是一个功能强大的数据处理和分析库,可以用于处理大规模日志数据集。它提供了灵活的数据结构、数据的读写和过滤等功能,并且可以进行统计、聚合以及可视化等操作。
.Numpy:Numpy是Python中最基础的科学计算库之一,它提供了高效的数值计算和矩阵运算,可以用于日志文件中数据的处理和分析。
.Scipy:Scipy是针对科学和工程计算的Python库。它提供了多种算法和工具,例如优化、信号处理、统计分析等,可以在日志数据的预处理和分析中发挥作用。
脚本打包
使用Python第三方打包库PyInstaller将py文件打包成一个可执行的exe文件
在使用时无需安装Python也可以点击运行
(需要提前准备ico图标文件)
打包执行代码命令:pyinstaller -F --icon=tp.ico te st.py;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/744513.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flask 专题

[CISCN2019 总决赛 Day1 Web3]Flask Message Board 查看session解密 但不知道密钥,题目说FLASK,那肯定就是找密钥,发现输入什么都没有显示,只有author那里有回显在版上,所以尝试sstl,{{config}}找到密钥 扫目录发现有admin进入…

6个免费的3D模型网站,助你3D建模渲染不用愁

​随着3D建模和渲染技术的不断发展,其重要性也日益增加。创建新的3D模型往往需要耗费大量时间,因此,本文整理了六个顶尖的免费3D模型资源网站,以便您能够方便地获取3D模型,大幅减少建模时间。这些资源有助于您更快地开…

考研408 2011年 第42题 (数据结构——队列)

#include <stdio.h>int MidSearch(int *A,int *B,int n) {//分别表示序列A到序列B的首位元素&#xff0c;末位数和中位数。s是star简写&#xff0c;d是end简写int s10,d1n-1,m1,s20,d2n-1,m2;//循环判断结束条件是&#xff0c;两个数组均不断删除 最后均只能剩余一个元素…

高铁地铁智慧公厕方案与案例介绍

随着轨道交通的快速发展&#xff0c;高铁、地铁、火车成为人们出行的主要交通工具。而在这种规划建设要求极具的场所&#xff0c;信息化、智慧化的管理系统部署必不可少&#xff0c;智慧公厕作为公共设施的重要组成部分&#xff0c;建设和管理也越来越受到重视。智慧公厕系统的…

线性回归啊

import torch import matplotlib.pyplot as pltx_data torch.Tensor([ [1.0],[2.0],[3.0] ]) y_data torch.Tensor([ [2.0],[4.0],[6.0] ])损失如果计算为向量是无法构建计算图 第一个参数 1 表示输入特征的数量&#xff0c;也就是模型接收的每个样本的特征数量。在这个例…

elasticsearch(学习笔记)(分布式搜索引擎)(黑马)(kibana操作)

一、索引库操作 索引库就类似数据库表&#xff0c;mapping映射就类似表的结构。 我们要向es中存储数据&#xff0c;必须先创建“库”和“表”。 1、mapping映射属性 mapping是对索引库中文档的约束&#xff0c;常见的mapping属性包括&#xff1a; type&#xff1a;字段数据类型…

自动驾驶最强学习资料

自动驾驶最强学习资料 资料说明和获取方式 本资料包是作者吐血整理的干货&#xff01;目前为止应该是非常全的自动驾驶资料包&#xff01;是作者五年自动驾驶算法工程师的 积累&#xff01; 以上干货资料并不全是作者自己原创&#xff0c; 是作者作为五年自动驾驶算法工程的…

春招_程序员怎么写简历_写简历网站

你们在制作简历时,是不是基本只关注两件事:简历模板,还有基本信息的填写。 当你再次坐下来更新你的简历时,可能会发现自己不自觉地选择了那个“看起来最好看的模板”,填写基本信息,却没有深入思考如何使简历更具吸引力。这其实是一个普遍现象:许多求职者仍停留在传统简历…

c++的类型转换和IO流

类型转换和IO流 一、c语言的类型转换 int i 1; // 隐式类型转换&#xff0c;这些类型都是表示数据的大小&#xff0c;整型家族包括char相互转化是因为他们只是范围不一样&#xff0c;浮点数与整型支持是因为浮点数本质也是表示数据的大小&#xff0c;只是加了精度而已&#…

vscode-server的搭建方法

一、配置服务器端口支持 1、开放端口&#xff1a; 2、关闭防火墙 systemctl stop firewalld.service systemctl disable firewalld.service二、配置code-server到服务器上** 1、下载code-server-4.22.0-linux-amd64.tar.gz到本地&#xff08;可下载最新的版本&#xff09;&a…

多人语聊房社交APP开发需要有哪些功能呢?

随着移动互联网的快速发展&#xff0c;社交APP已经成为人们日常生活中不可或缺的一部分。而随着语音社交的兴起&#xff0c;多人语聊房社交APP也逐渐受到了用户的青睐。在开发多人语聊房社交APP时&#xff0c;需要具备一系列功能&#xff0c;以满足用户的需求并提供良好的使用体…

Java原型模式源码剖析及使用场景

一、 项目案例 在项目开发中,我们可以在需要创建复杂对象或者需要大量创建对象的场景下使用原型模式。比如,我们需要在内存中缓存大量的图像对象,每个图像对象都包含了一些元数据信息。如果每次都从头创建一个新的图像对象,势必会消耗大量的系统资源。 这时,我们可以使用原型…

C# 数据结构初始化

在C#中&#xff0c;可以使用各种不同的数据结构来存储和操作数据。以下是一些常见数据结构的初始化示例&#xff1a; 1.数组 (Array): // 声明并初始化整型数组 int[] intArray new int[] { 1, 2, 3, 4, 5 };// 声明并初始化字符串数组 string[] stringArray new string[] …

Linux的一些常用指令

一、文件中 r w x - 的含义 r&#xff08;read&#xff09;是只读权限&#xff0c; w&#xff08;write&#xff09;是写的权限&#xff0c; x&#xff08;execute&#xff09;是可执行权限&#xff0c; -是没有任何权限。 二、一些指令 # 解压压缩包 tar [-zxvf] 压缩包名…

知名Web3 风险投资公机构Hack VC 四位合伙人将亲临hack.summit()2024亚洲区块链开发者大会

2024-03-14 15:32:24 知名web3风险投资机构Hack VC的四位合伙人——Alex Pack、Ed Roman、Roshun Patel和Rodney Yesep将亲临hack.summit()2024亚洲区块链开发者大会&#xff0c;这一盛事将于2024年4月9日至10日在香港数码港举行。 此次大会由Hack VC主办&#xff0c;并得到Alt…

AI预测福彩3D第8弹【2024年3月14日预测--新算法重新开始计算第五次测试】

兄弟们&#xff0c;感觉要起飞了&#xff01;截止昨天&#xff0c;经过新修正的算法进行3D预测&#xff0c;已经连续3次命中7码了&#xff0c;甚至6码或5码就能命中&#xff01; 昨天的开奖是 3 4 9,我的预测结果可参加上一篇文章 继续乘胜追击&#xff0c;再接再厉&#xff0…

设计一些策略和技术来防止恶意爬虫

当涉及到反爬虫时&#xff0c;我们需要设计一些策略和技术来防止恶意爬虫访问我们的网站。以下是一个简单的反爬虫框架示例&#xff0c;供您参考&#xff1a; import requests from bs4 import BeautifulSoup import timeclass AntiScrapingFramework:def __init__(self, targ…

Linux-vim显示乱码

Linux运维工具-ywtool 目录 一.问题二.解决2.1 编辑VIM的配置文件2.2 添加以下内容 一.问题 用vim编辑的时候,中文显示乱码 二.解决 2.1 编辑VIM的配置文件 vim ~/.vimrc #如果这个文件不存在,创建一个即可2.2 添加以下内容 添加完成以后就不会在出现中文乱码了 set fil…

ECRS软件:通过视频分析实现精益生产的利器

在追求高效生产的现代工业体系中&#xff0c;精准的数据分析和科学的流程管理是企业不可或缺的核心竞争力。ECRS软件作为一款专业的工时分析工具&#xff0c;通过视频分析的方式&#xff0c;为企业的精益生产提供了有力支持。使用ECRS软件&#xff0c;企业只需完成三项基础操作…

spring-authorization-server如何通过JWK Set Endpoint来获取公钥并验签的

参考文档&#xff1a;spring-authorization-server【版本1.2.2】 问题 在spring-authorization-server官方文档中提供了JWK Set Endpoint相关介绍&#xff0c;此端点主要返回JWK Set &#xff0c;此JWK Set包含了授权服务提供的所有公钥集&#xff0c;具体可通过访问端点&…