python123第k序元素查找_二级个人笔记
【资料】考纲+b站+蓝皮书补充
考试大纲(11/11):Python123
b站视频(30/30)
北理视频()
蓝皮书()
刷题:
一、程序设计的基本方法
1、程序运行(交互式;文件式)
2、编程方法IPO(输入,处理,输出)
3、程序设计语言概述(计算机指令、计算机程序)
编译(静态语言):源代码→目标代码(执行)。一次性,不需要编译。速度更快。
解释(脚本语言):源代码逐条转换并逐条运行。每次运行都需要。
二、基本语法元素
1、基本语法元素
(1)程序的格式框架(缩进,注释)
缩进:1个缩进=4个空格,二者不能混用。缩进是表明程序框架的唯一手段。
(2)语法元素名称(变量,命名,保留字)
命名:首字符不可是数字,中间不可空格,不可用保留字,大小写敏感。
保留字(35个) 确认一下!!!
(3)数据类型(数字类型:整数,浮点数,复数;字符串类型;其他类型)
(4)产生或计算新数据值的代码片段称为表达式
2、基本输入输出函数
(1)input()输出的是字符串
(2)eval()eval()将输入的字符串转换为python语句 e.g.数字
#常与input()一起使用,获取用户输入的数字
eval(input("提示文字"))
#与print()
print(eval(""))
eval("hello")与eval("'hello'")结果不同,前者没定义报错,后者为hello。
eval(""hello"")报错,不可两个双引号结合使用
(3)print()输出字符串,一个或多个变量,混合字符串和变量值,对end参数进行赋值
#混合字符串和变量值
print("{}和{}".format(a,b)) e.g. print("我最喜欢{}".format("77"))
#对end参数赋值(默认回车换行)
print(a, end="")
三、基本数据类型
1、数字类型(整数、浮点数、复数)
(1)整数
十六进制:0x a=10 b=11 以此类推 e.g. 0x3F2 = 3x16^2+15^16^1+2
八进制:0o
二进制:0b
bin() #返回二进制的小写字符串
oct() #返回八进制的小写字符串
hex() #返回十六进制的小写字符串
(2)浮点数
浮点数计算只有前15位保证精度,因此可用整数计算浮点数获得高精度。
decimal.Decimal('xxx') 提高浮点数精度
(3)复数
b=0或1时,不能省略
2、数字类型的操作&函数
(1)操作
// 整除
% 求余
整数和浮点数,结果为浮点数
整数/浮点数和复数,结果为复数
(2)函数
3、字符串类型
(1)转义符\n 换行
\\ 反斜杠
\' 单引号
\" 双引号
\t 制表符(TAB)
(2)索引
[序号]
(3)切片
[N: M]
[::-1]输出整个,-1表示从右往左,步长为1
(4)format的格式控制
:固定格式不变
宽度小于输入的宽度,不起作用
类型的f,指浮点数
4、字符串的操作&函数
(1)操作
x + y连接两个字符串x与y
x*n 或 n*x复制n次字符串x
x in s 判断x是否s的子串,返回T/F
(2)函数
len()
str() 返回任意类型的字符串形式
chr() 返回Unicode编码x对应的单字符 chr(65) #A
ord() 返回单字符表示的Unicode编码 ord("A") #65
hex() 返回十六进制的小写字符串
oct() 返回八进制的小写字符串
(3)处理方法
#转换成小写,是副本(原始string不变)
str.lower()
#转换成大写,是副本(原始string不变)
str.upper()
#根据sep被分割,可以空格或数字或字母,结果是列表数据
str.split(sep=None)
a = "i like ice cream"
a.split(" ") #['i', 'like', 'ice', 'cream']
#返回sub字符串出现的次数
str.count("sub")
#把old换成new
str.replace(old,new)
#字符串居中函数,fillchar默认空格,也可以设置填充如-*
str.center(width,fillchar)
#删除左侧和右侧的字符,不能删除中间
str.strip(chars)
#将str字符插入iter变量的元素之间
str.join(iter)
".".join("12345") #'1.2.3.4.5'
#查找字符c的位置,从第二个开始(不写默认从0)
s.find("c",2)
5、判断类型&类型转换
(1)判断类型
type()
(2)类型转换
eval() 字符串换成数字
int(x)将x转换为整数
float(x) 将x转换为浮点数
str(x) 将x转换为字符串
四、程序的控制结构
1、程序的基本结构(顺序结构、分支结构、循环结构)
break 结束循环;continue结束当前循环的当次循环
(1)分支结构
①单分支结构。多个条件用and/or
if :
语句块
②二分支结构 if-else
if :
else:
当和都只包含简单表达式时,可写作:
if else
③多分支结构 if-elif-else
if :
elif :
else:
(2)循环结构
是程序根据条件判断结果向后反复执行的一种运行方式,根据循环体触发条件不同,包括遍历循环和无限循环结构。
① 遍历循环
遍历结构可以是字符串、文件、range()函数或组合数据类型。字符串:
for in :
range()函数,可以指定语句块的循环次数:
for in range():
遍历循环的扩展模式:
当for循环正常执行之后,程序会继续执行else语句中内容。else语句只在循环正常执行之后才执行并结束,因此,可以在中放置判断循环执行情况的语句
for in :
else:
②无限循环 while
while :
(3)循环控制
break:跳出最内层for或while循环,脱离该循环后程序从循环后代码继续执行。
for i in "water":
if i == "t":
break
print(i, end="")
#wa
continue:结束当前当次循环,即跳出循环体中下面尚未执行的语句,但不跳出当前循环。
for i in "water":
if i == "t":
continue
print(i, end="")
#waer
·求和1~10质数,并输出非质数
s=0
for i in range(1,10):
for j in range(2,i):
if i%j==0:
print(i,"不是质数")
break
else:
s += i
print("1-10质数之和为:%d"%s)
2、异常处理try-except
(1)输入异常
try:
except:
(2)运行异常
五、函数和代码复用
1、函数的基本使用没有参数时也要保留圆括号
如果需要返回值,使用保留字return和返回值列表。函数可以没有return语句,函数体结束后会将控制权返回给调用者。
#定义
def ():
return
#调用
()
2、函数的参数传递
可选参数一般都放置在非可选参数的后面,即定义函数时,先给出所有非可选参数,然后再分别列出每个可选参数及对应的默认值。
def (, = ):
return def vfunc(a,b) 错误。*a为列表型变量,要放在后面。
参数名称传递(函数按照参数名称方式传递参数)
( = )
函数的返回值
return用来结束并将程序返回到函数被调用的位置继续执行。
使用return返回多个值时,可以用一个/多个变量保存结果。
3、变量的作用域
(1)局部变量
在函数内部使用的变量,仅在函数内部有效,当函数退出时变量将不再存在。
(2)全局变量
全局变量可以和局部变量同名
4、代码复用
六、组合数据类型(集合、序列、映射)
集合类型是一个具体的数据类型名称,而序列类型和映射类型是一类数据类型的总称
集合类型:元素集合,无序,相同元素在集合中唯一存在。
序列类型:是一个元素向量,元素之间存在先后关系,通过序号访问,元素之间不排他。 序列类型的典型代表是字符串类型和列表类型。
映射类型:是“键-值” 数据项的组合,每个元素是一个键值对,表示为(key, value)。 映射类型的典型代表是字典类型。
1、集合 {}
无序,没有索引和位置,元素可以动态增加or删除。不可重复。
元素类型:只能是固定数据类型:整数、浮点数、字符串、元组等。
可以print过滤重复元素。
(1)操作符
& #交集
| #并集
- #差集
^ #补集
(2)函数方法
S.add(x) #把数据项x增加到集合S(S必须要有数字)
S.remove(x) #如果x在集合S中,则移除;不在则产生异常
S.clear() #移除S中所有
len(S) #返回S元素个数
x in S
x not in S
2、序列类型 []
一维元素向量,存在顺序,通过序号访问。
数据可以是:字符串、列表、元组类型
序列类型使用相同的索引体系,即正向递增序号和反向递减序号
操作符和函数:
x in s
x not in s
s + t
s*n 或 n*s
s[i]
s[i:j]
s[i:j:k]
len(s)
min(s)
max(s)
s.index(x) #序列s中第一次出现元素x的位置
s.count(x) #序列s中出现x的总次数
(1)列表 []
可以通过list(x) 函数将集合或字符串类型转换成列表类型
ls.append(x) #只能增加1个元素
ls.insert(i,x) #在第i位置增加元素x
ls.clear()
ls.pop(i) #将第i项元素取出并删除元素
ls.remove(x) #将列表中出现的第一个元素x删除
ls.reverse() #列表ls中元素反转
del ls[1:] #从序号1开始全部删除(包括1)
ls.copy() #复制ls中所有元素生成一个新列表(清空ls不影响新的lt)
#使用索引配合等号(=)可以对列表元素修改
3、字典 {}
键-值,元素是key,value,元素之间无序。
键和值通过冒号连接,不同键值对通过逗号隔开。字典类型和集合类似,即键值对之间没有顺序且不能重复。字典各个元素并没有顺序之分。
(1)索引
利用键值对关系索引元素:
= []
索引和赋值(=)可以对字典的元素进行修改
大括号创建字典,通过索引和赋值可以增加元素
(2)操作函数
len(d)
dict()
(3)操作方法
d.keys() #返回所有键
d.values() #返回所有值
d.items() #返回素有键值对
d.get(key,default) #根据键查找返回值信息,有key就返回对应的值,否则就返回新的default
d.pop(key,default) #根据键信息查找并取出值信息,并从字典里删除对应的键值对
d.popitem() #随机取出一个键值对,以元组(key,value)形式返回。 取出后从字典中删除这个键值对
d.clear() #删除字典中所有键值对。保留变量。
七、文件和数据格式化
1、文件的使用
文件是存储在辅助存储器上的一组数据序列,可以包含任何数据内容。概念上,文件是数据的集合和抽象。
文本文件:由单一特定编码的字符组成,如UTF-8编码,内容容易统一展示和阅读
二进制文件:由比特0和比特1组成,文件内部数据的组织格式与文件用途有关。二进制是信息
按照非字符但特定格式形成的文件,例如,png格式的图片文件、avi格式的视频文件。
区别在于是否有统一的字符编码。
(1)打开
#t表示文本文件
f = open("a.txt","rt")
print(f.readline())
f.close()
#b表示二进制文件
f = open("a.txt","rb")
print(f.readline())
f.close()
打开模式
r #只读
w #覆盖写,不存在则创建,存在则覆盖源文件
x #创建写,不存在则创建,存在则异常
a #追加写,不存在则创建,存在则追加内容
b #二进制文件
t #文本文件
+ #与r/w/x/a一同使用,在原功能基础上增加读写功能
打开模式中,'r'、'w'、 'x'、 'b'可以和'b'、 't'、 '+'组合使用,形成既表达读写又表达文件模式的方式。
(2)文件的读取
读取一次后,无法再次读取相同内容
f.read(size=-1) #读入整个文件内容,字符串形式
f.readline(size=-1) #读入一行,字符串
f.readlines(hint=-1) #读入整个,列表
f.seek(offset) #f.seek() 能够移动读取指针的位置
f.seek(0)将读取指针移动到文件开头,f.seek(2)将读取指针移动到文件结尾。
遍历循环读取
f.open("a.txt","r")
for line in f:
print(line) #处理一行数据
f.close()
(3)写入
f.write(s)向文件写入字符串s,每次写入后,将会记录一个写入指针。该方法可以反复调用,将在写入指针后分批写入内容,直至文件被关闭。'\n' 记得写,换行。
f.writelines(lines)直接将列表类型的各元素连接起来写入文件f
2、数据的维度
一组数据在被计算机处理前需要进行一定的组织,表明数据之间的基本关系和逻辑,进而形成“ 数据的维度” 。根据数据的关系不同,数据组织可以分为:一维数据、二维数据和高维数据。
(1)一维数据(线性方式组织,e.g.列表,数组)
(2)二维数据(表格)
(3)高维数据(多层嵌套)
3、一维数据的处理
(1)存储
ls = ["我","喜欢","oreo"]
f = open("a.csv","w")
f.write(",".join(ls)+"\n") #以逗号分隔在csv格式里,把列表ls用join变成izi符串
f.close()
(2)处理:从CSV读入一维数据,并表示为列表对象
f = open("a.csv","r")
ls = f.read().strip('\n').split(",")
f.close()
print(ls)
4、二维数据的处理
(1)存储(二维数据存储为CSV)
f = open("a.csv","w")
for row in ls:
f.write(",".join(row)+"\n") #ls代表二维列表
f.close()
(2)处理(从CSV读入二维数据,并表示为二维列表对象)
f = open("a.csv","r")
ls = [] #创建新列表
for line in f:
ls.append(line.strip('n\').split(","))
f.close()
print(ls)
借助循环遍历实现对每个数据的处理,
for row in ls:
for item in row:
八、python计算生态
1、体育竞技实例
2、web页面元素提取
Web页面一般是html超文本标记语言,是一种对信息的标记语言,对Web的内容、格式进行描述。
九、turtle库
调用
import turtle
turtle.circle(200)
from turtle import *
circle(200)
import turtle as t
t.circle(200)
1、设置主窗体的大小和位置
turtle.setup(width, height, startx, starty)
2、画笔控制函数
#抬起画笔,移动画笔不绘制形状
turtle.penup turtle.up
#移动画笔绘制形状
turtle.pendown turtle.down
#设置画笔尺寸
turtle.pensize turtle.width()
e.g. turtle.width(25)
#设置画笔颜色
turtle.pencolor(colorstring) or turtle.pencolor((r,g,b))
#填充图形前
begin_fill()
#填充图形结束
end_fill()
#返回填充状态,T为填充,F为未填充
filling()
3、绘制
#前进distance
turtle.fd()
#向右旋转angle
right(angle)
向左旋转angle
left(angle)
#改变画笔方向(正东为0,正北为90)
turtle.seth(to_angle)
#根据半径r绘制extent角度的弧形(extent不设置or None则画整个圆)
turtle.circle(radius, extent = None)
十、random库
调用
from random import *
最基本的函数:random.random() #生成一个[0.0, 1.0)之间的随机小数输出一个6位数的验证码
ls =[]
for i in range(6):
num=random.randrange(0,10)
ls.append(str(num))
s="".join(ls) #为了输出是连续数字列表
print(s)
十一、time库
十二、第三方库
pip工具安装
pip install
1、pyinstaller
(1)打包
使用PyInstaller库对Python源1文件打包。最终在dist内生成exe文件,可直接执行
:\>Pyinstaller -F
2、jieba库
import jieba
(1)中文分词
jieba.lcut(s)#精准模式,返回列表
jieba.lcut(s, cut_all=True)#全模式(可能会重复)
jieba.lcut_for_search(s)#返回搜索引擎模式(先精确模式,再对长词进一步切分)
jieba.add_word() #增加新单词
(2)词云
调用
pip install wordcloud
from wordcloud import WordCloud
使用
t = "我喜欢冰淇淋,尤其是oreo"
words = jieba.lcut(txt) #精确分词
newtxt = ' '.join(words) #用空格拼接
wordcloud = WordCloud(font_path="msyh.ttc").generate(newtxt) #msyh 微软雅黑字体
wordcloud.to_file('1.png')
python123第k序元素查找_二级个人笔记相关推荐
- python123第k序元素查找_Python实现折半查找并用matplotlib实现动态过程可视化
折半查找是算法中减治策略的基本例子,实现起来也很简单,但是在网上看到的图片教程不觉得很乾巴麽?? 在这里插入图片描述 这是一个简单的实现: def Reduction(lists, k): " ...
- python第k序元素查找列表_【Python】第8次练习:列表——程序填空题 -合并队列、列表元素零的移动、列表逆序输出、第K序元素查找...
[Python]第8次练习:列表--程序填空题 -合并队列.列表元素"零"的移动.列表逆序输出.第K序元素查找 1.程序填空题 -合并队列 题目:某班男女两队同学各若干人,男生已按 ...
- python第k序列元素查找_【python】寻找数组中第k大的元素
题目链接:https://www.nowcoder.com/question/next?pid=13956292&qid=298692&tid=26431616 方法一: 最简单直接的 ...
- python第k序列元素查找_python查找第k小元素代码分享 -电脑资料
复制代码代码如下: # -*- coding: utf-8 -*- from random import randint from math import ceil, floor def _parti ...
- python第k序列元素查找_Python寻找第k小的元素
更多: http://my.oschina.net/u/438371/blog/131956 1.[代码][Python]代码 # -*- coding: utf-8 -*- from random ...
- 快速排序_查找第k小元素
快速排序_查找第k小元素 以下代码可以从数组a[]中找出第k小的元素. 它使用了类似快速排序中的分治算法,期望时间复杂度是O(N)的. 请仔细阅读分析源码,填写划线部分缺失的内容. 一个问题,快排你的 ...
- 网易_在数组中查找前K个元素
笔试题,最后一题 查找网易云音乐中播放量最大的前K个歌曲. 换句话说,就是在数组中查找前K大元素. 大致有以下几个思路. 1.第一感觉就是对数组进行降序全排序,然后返回前K个元素,即是需要的K个最大数 ...
- 《编程之美》 查找最大(小)的k个元素
http://blog.csdn.net/v_july_v/article/details/6370650 http://blog.csdn.net/insistgogo/article/detail ...
- java查找第k大的数字_查找数组中第k大的数
问题: 查找出一给定数组中第k大的数.例如[3,2,7,1,8,9,6,5,4],第1大的数是9,第2大的数是8-- 思考:1. 直接从大到小排序,排好序后,第k大的数就是arr[k-1]. 2. ...
最新文章
- 2021-07-01带Left Join的SQL语句的执行顺序
- Linux运维:快速清空文本内容
- 解决GitHub报错:schannel:failed to receive handshake, SSL/TLS connection failed
- android10如何设置打开方式,Android启动方式
- java image类的值_关于在java中保存image类型的字段的问题
- 在React中处理事件
- 继续泼冷水 Ubuntu决定放弃支持安腾
- 3-4numpy聚合操作和arg(索引)运算和排序
- c++如何判断两个字符串是否相同?_链表 | 如何判断两个单链表(无环)是否交叉...
- Bailian2911 受限完全平方数【暴力】
- 你的主机中的软件中止了一个已建立的连接。_winscp中文版,winscp中文版软件的使用技巧...
- Win7 局域网内简单共享的设置
- Java编程题——简单下拉框二级联动
- java无经验_应届生没有项目经验怎么面试?(java篇)
- doc批量转成docx(doc batch convert docx)
- 【FOMO3d】 的隐藏彩(lou)蛋(dong)
- powershell 使用_如何使用PowerShell生成随机名称和电话号码
- 【大数据分析】2021“秋招”毕业生求职的网络舆论关注度分析
- OnMeasure()
- 期货外接看穿式技术方面问答总结