python基本语法总结(超级全面,细致,只用一周就可以入门python到实践),会持续更新

object oriented programm
第一天注意的知识点:

变量:用来保存和表示数据的占位符号,变量采用标识符来表示,关联标识符的过程叫命名
数据类型:供计算机程序理解的数据形式
对字符串的索引采用“[]“形式,注意切片和步长的表示方法
输入函数input返回的是一个字符串(输入一次按回车表示本次输入结束),参与运算要注意去掉返回字符串的引号,函数里面可以输入带有提示性的文字,输出函数print是以字符形式向控制台输出结果的函数,字符串类型的一对引号仅在程序内部使用,输出无引号,在print后面加一个参数(end = “”),可以不换行输出(python——print输出是自动换行的);评估函数eval作用是去掉参数最外侧引号并执行余下语句的函数,注意槽机制“{}”的使用对输出格式的控制,format函数的一个参数即对应一个槽
每个保留字所在行最后存在一个冒号:这是语法的一部分,切忌忘记,注意括号一定要成对
python支持中文字符,这点一定要会用,记住
Python计算生态= 标准库+ 第三方库,标准库Python计算生态= 标准库+ 第三方库-标准库:随解释器直接安装到操作系统中的功能模块-第三方库:需要经过安装才能使用的功能模块-库Library、包Package、模块Module,统称模块

python——turtle库的使用
原理:有一只海龟在窗体正中心游走,游走的痕迹形成了图像
turtle.circle的参数为默认圆心在海龟左侧r位置处,若r为负数则为海龟前进方向的右侧
注意海龟坐标和绝对坐标,海龟方向角度以及绝对角度,海龟的描述是相对于目前海龟所处的位置而言
,而绝对坐标和方向是相对于以画布中心为坐标原点而言
画笔控制函数 ——penup、pendown、pencolor、pensize
海龟运动控住函数——forward,back、circle(走曲线)
方向控制函数——goto(到达某个绝对坐标值)、seth(绝对的方向角度)、left、right(相对于海龟的角度而言)
画图注意逻辑,实现的步骤是什么,特别要旋转角度,一定要合理运用circle函数。以及绝对的坐标,角度

第二天注意的知识点:
基本数据类型及其表示:
1:数字类型:python整数类型取值范围无限制,浮点数间的运算存在不确定的尾数,一般不确定尾数出现在小数点后16位,不是bug,浮点数可以用科学计数法来表示,E == a*10^b;复数类型与数学复数完全一致,分别用Z.real、Z.imag获得复数额实部和虚部,数值运算操作符和数学完全一致,X//y是整除的表示,X**Y 是X的Y次幂的表示方法,其余和数学完全一致
类型间可进行混合运算,生成结果为"最宽"类型-三种类型存在一种逐渐"扩展"或"变宽"的关系:整数->浮点数-> 复数
一些常用的数值运算函数:
round(x,y)___四舍五入x保留y位小数
max、min——最大最小值计算
divmod——商余函数,返回一个元祖类型的商和余数
pow——计算x的y次幂函数
可分别用int、float、complex函数将某些数据类型强制转换为该类型

2:字符串类型及其操作:
python没有单独的字符类型。只有字符串类型:由0个或多个字符组成的有序字符序列-字符串由一对单引号或一对双引号表示
注意字符串切片的高级用法,步长为从当前元素算起,步长为负数,表示从后面往前切片,转移字符“\”的使用和C语言类似
字符串操作符:x+ y连接两个字符串x和y
n *x 或x *n 复制n次字符串x
x ins如果x是s的子串,返回Tr u e,否则返回False
字符串处理函数:
len、str(将任意数据类型转换为字符串类型)、hex、oct(整数x的十六进制或八进制小写形式字符串hex(425)结果为"0x1a9"oct(425)结果为"0o651")
chr(u)x为Unicode编码,返回其对应的字符
ord(x)x为字符,返回其对应的Unicode编码(字符只能为单个字符的操作)python字符串中每个字符都是unicode编码的字符
字符串处理方法:
方法在编程中是一个专有名词:“方法"特指.()风格中的函数()-方法本身也是函数,但与有关,.()风格使用
str.lower()/upper()——返回字符串的副本,全部大写或者小写
str.split(sep=None)——返回一个列表,由str根据sep被分隔的部分组成"A,B,C”.split(",")结果为[‘A’,‘B’,‘C’],看字符串中有没有sep的内容,有则按照sep内容分割为列表的形式,字符串中需要有间隔符,才会默认分割为按",“分开的列表
str.count()——返回字符串的子串在字符串中出现的次数
str.replace(old,new),返回字符串的副本,所有old被替换为new
str.center(width[,fillchar])——字符串str根据宽度width居中,fillchar可选"python”.center(20,"=")结果为’=python=’,用于格式的转换
str.strip(chars)——从str中去掉在其左侧和右侧chars中列出的字符"= python= “.strip(”=np" )结果为"ytho",,仅仅去掉该字符串的两边,中间不会去掉,strip的意思为脱去,除去
str.join(iter)——在iter变量除最后元素外每个元素后增加一个str,",".join(“12345”)结果为"1,2,3,4,5"#主要用于字符串分隔等, iter对象里面的元素必须为字符串
注意字符串的操作方法的针对于字符串类型的,函数的参数一定要用字符串去表示

字符串的格式化:
格式化是对字符串进行格式表达的方式,字符串格式化使用.format()方法,用法如下:<模板字符串>.format(<逗号分隔的参数>)
format()方法的格式控制:引入槽机制,槽内部为{ <参数序号> :<格式控制标记>}
格式控制标记为:<填充><对齐><宽度>、<,><.精度><类型>,后面三个针对数字而言,槽内引导符号":"
不要忘记,若宽度标记小于字符串宽度,则以字符串长度显示
对于数字的格式化: {0:e},{0:E},{0:f},{0:%}".format(3.14)——输出为:‘3.140000e+00,3.140000E+00,3.140000,314.000000%’
“{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}”.format(425 )——输出为:‘110101001,Ʃ,425,651,1a9,1A9’

time库的使用:
提供系统级精确计时功能,用于程序性能分析
time库概述time库包括三类函数-
时间获取:time(获取当前时间戳,即计算机内部时间值,浮点数) ctime(获取当前时间并以易读方式表示,返回字符串) gmtime(获取当前时间,表示为计算机可处理的时间格式,一般与strftime函数配合使用)
时间格式化:strftime(tpl, ts) tpl是格式化模板字符串"%Y -%m-%d %H:%M:%S,用来定义输出效果,ts是计算机内部时间类型变量
程序计时:sleep():产生时间,以秒为单位,产生一个用户想要的具体时间值
perf_counter():返回一个CPU级别的精确时间计数值,单位为秒,测量时间,程序开头一次,结尾一次,二者之差为程序运行的时间

第三天注意知识点:程序的控制结构

1:分支结构:单分支结构根据判断条件结果而选择不同向前路径的运行方式,采用if—elif-----else形式
单分支结构,二分之结构、多分支结构,二分支结构有种紧凑表达:
紧凑形式:适用于简单表达式的二分支结构<表达式1> if<条件> else<表达式2>,注意为表达式
条件判断操作符与C语言一样(!=、<=、>=、==)
用于条件组合的三个保留字:条件组合操作符及使用描述:
x and y两个条件x和y的逻辑与
x or y两个条件x和y的逻辑或 -》》》》注意此时为逻辑表达关系,条件的组合
notx条件x的逻辑非
程序的异常处理:
try:except:的使用,处理简单的程序异常情况,若except后面加上了异常名字,则只处理该异常
分支结构注意条件的判断,以及各个条件之间的关系,是否有包含,条件的逻辑关系理清楚

2:程序的循环结构:
遍历循环:遍历某个结构形成的循环运行方式:for<循环变量> in<遍历结构> :<语句块>,从遍历结构中逐一提取元素,放在循环变量中,
遍历循环的应用:常与保留字in和函数range放在一起使用,构成计数循环(特定次(与切片方法类似产生序列)、N次)、字符串和列表的遍历、对文件的遍历,注意循环变量和遍历结构之间的关系,每次循环将遍历结构中的元素赋值给循环变量
无限循环:由条件控制的循环运行方式-反复执行语句块,直到条件不满足时结束,while<条件>:语句块构成
循环控制保留字:
break:跳出并执行当前的整个循环(只能跳出一层循环,若有多层循环,继续执行下一层循环),仅跳出当前最内层循环
continue:结束当次循环,即当次continue后面的语句不再执行
循环的高级用法:循环结构与else结构配合使用,当循环没有被break语句退出时,执行else语句块-else语句块作为"正常"完成循环的奖励,与循环保留字for 、while属于同一层次,注意执不执行else语句与与break有关

random库的使用:
random库包括两类函数,常用共八个:
基本随机函数:seed()给定随机数种子产生随机数、random()产生0~1之间的随机小数
扩展随机函数:randint、randrange、getrandbits、uniform、
choice、shuffle(打断排列顺序)//这两个函数是对序列的操作
学会利用大量样本数据去模拟一个精确值的计算

第四天知识点:函数和代码复用

函数是一段具有特定功能的、可重用的语句组、函数是一种功能的抽象,一般函数表达特定的功能,代码复用。
函数的定义函数是一段代码的表示;
def <函数名>(<参数(0个或多个)> ) :
<函数体>
return<返回值>
函数的定义:函数定义时,所指定的参数是一种占位符-函数定义后,如果不经过调用,不会被执行-函数定义时,参数是输入、函数体是处理、结果是输出(IPO)
调用:调用是运行函数代码的方式,调用时要给出实际参数-实际参数替换定义中的参数-函数调用后得到返回值
函数的参数传递:函数可以有参数,也可以没有,但必须保留括号
可选参数传递:函数定义时可以为某些参数指定默认值,构成可选参数,函数调用时如果不为可选参数指定值,则采用可选参数的默认值,指定了新值,则采用新值
可变参数传递:函数定义时可以设计可变数量参数,即不确定参数总量,采用“*”的形式
def<函数名>(<参数>,*b) : 当输入多个参数时,b相当于一个元组了,采取对元祖的操作来操作b
<函数体>
return<返回值>

参数传递的两种方式函数调用时,参数可以按照位置或名称方式传递
函数的返回值函数可以返回0个或多个结果-return保留字用来传递返回值-函数可以有返回值,
也可以没有,可以有return,也可以没有-return可以传递0个返回值,也可以传递任意多个返回值,函数如果有多个return值,那么会把这几个return值放到一个元组里面返回

局部变量和全局变量规则1: 局部变量和全局变量是不同变量-局部变量是函数内部的占位符,
与全局变量可能重名但不同-函数运算结束后,
局部变量被释放-可以使用global保留字在函数内部使用全局变量 ,加了global则可以在函数内部定义
全局变量了,就可以改变全局变量的值了

局部变量和全局变量规则2: 局部变量为组合数据类型且未创建,等同于全局变量,也就是说在函数外部
声明了一个全局变量且为组合数据类型,在定义函数时未在函数内部声明次组合类型的变量,则该变量相当于
全局变量,若在函数内部有再次声明了该组合数据类型的变量,则该变量相当于局部变量了

局部变量和全局变量使用规则-基本数据类型,无论是否重名,局部变量与全局变量不同-
可以通过global保留字在函数内部声明全局变量-
组合数据类型,如果局部变量未真实创建,则是全局变量

lambda函数:lambda函数返回函数名作为结果-lambda函数是一种匿名函数,即没有名字的函数
-使用lambda保留字定义,函数名是返回结果-
lambda函数用于定义简单的、能够在一行内表示的函数
结构:<函数名>=lambda<参数>:<表达式>,返回一个函数名,下次可以直接使用该函数名调用lambda函数,定义的简单函数eg:f = lambda x, y : x + y f(10, 15)------>25
使用保留字def定义函数,lambda定义匿名函数-可选参数(赋初值)、
可变参数(*b)、名称传递-保留字return可以返回任意多个结果-
保留字global声明使用全局变量,一些隐式规则,使用函数注意这些事项即可

函数递归一定要先明确基例和链条是什么,然后再写程序确定递归方式

第五天知识点:
1:集合类型及其操作:
集合是多个元素的无序组合-集合类型与数学中的集合概念一致-集合元素之间无序,每个元素唯一,不存在相同元素-集合元素不可更改,不能是可变数据类型
集合用大括号{} 表示,元素间用逗号分隔-建立集合类型用{} 或set()-建立空集合类型,必须使用set(),与字典类型的区别,字典建立空可直接用{}表示
集合操作符:
S | T并,返回一个新集合,包括在集合S和T中的所有元素
S - T差,返回一个新集合,包括在集合S但不在T中的元素
S & T交,返回一个新集合,包括同时在集合S和T中的元素
S ^ T补,返回一个新集合,包括集合S和T中的非相同元素
S <= T 或S < T返回True/False,判断S和T的子集关系
S >= T 或S > T返回True/False,判断S和T的包含关系
注意差和补集与数学中的区别
增强操作符:|=、-=、&=、^=
集合处理方法:
S.add(x)如果x不在集合S中,将x增加到S
S.discard(x)移除S中元素x,如果x不在集合S中,不报错
S.remove(x)移除S中元素x,如果x不在集合S中,产生KeyError异常
S.clear()移除S中所有元素
S.pop()随机返回S的一个元素,更新S,若S为空产生KeyError异常,更新为去除该元素的集合
S.copy()返回集合S的一个副本
len(S)返回集合S的元素个数x in S判断S中元素x,x在集合S中,返回Tr u e,否则返回Falsex
not in S判断S中元素x,x不在集合S中,返回Tr u e,否则返回False
set(x)将其他类型变量x转变为集合类型

集合应用场景:
包含关系比较、数据去重:集合类型所有元素无重复

2:序列类型及其操作:
序列是具有先后关系的一组元素,序列是一维元素向量,元素类型可以不同-类似数学元素序列:s0, s1, … , sn-1-元素间由序号引导,通过下标访问序列的特定元素
序列是一个基类类型,包括:字符串类型、元组类型、列表类型
序列类型通用操作符函数和方法:
x in s如果x是序列s的元素,返回Tr u e,否则返回Falsex
not in s如果x是序列s的元素,返回False,否则返回Tr u e
s + t连接两个序列s和tsn 或ns将序列s复制n次
s[ i]索引,返回s中的第i个元素,i是序列的序号
s[ i: j]或s[ i: j: k]切片,返回序列s中第i到j以k为步长的元素子序列
len(s)返回序列s的长度,即元素个数
min(s)返回序列s的最小元素,s中元素需要可比较max(s)返回序列s的最大元素,s中元素需要可比较
s.index(x) 或s.index(x, i, j)返回序列s从i开始到j位置中第一次出现元素x的位置
s.count(x)返回序列s中出现x的总次数

3:元祖类型及其操作:
元组是序列类型的一种扩展-元组是一种序列类型,
一旦创建就不能被修改-!!!!!字符串类型也是一样,不能修改其中某个字符
使用小括号() 或tuple() 创建,元素间用逗号, 分隔-可以使用或不使用小括号,注意:当有多个值赋给一个变量x时,x默认为元祖类型了

4:列表类型及其操作:
列表是一种序列类型,创建后可以随意被修改-使用方括号[] 或list() 创建,元素间用逗号, 分隔-列表中各元素类型可以不同,无长度限制
注意!!!方括号[] 真正创建一个列表,赋值仅传递引用,当一个列表变量赋值给另外一个列表变量时,两个变量指向同一个列表变量,改变其中一个列表变量的值,其中另外一个也会改变

列表类型操作函数和方法:
ls[ i] = x替换列表ls第i元素为x
ls[ i: j: k]= lt用列表lt替换ls切片后所对应元素子列表
del ls[i]删除列表ls中第i元素
del ls[i: j: k]删除列表ls中第i到第j以k为步长的元素
ls += lt更新列表ls,将列表lt元素增加到列表ls中
ls *= n更新列表ls,其元素重复n次
ls.append(x)在列表ls最后增加一个元素x,如果x是一个列表,则该列表作为一个元素增加的ls中。
ls.clear()删除列表ls中所有元素
ls.copy()生成一个新列表,赋值ls中所有元素
ls.insert(i,x)在列表ls的第i位置增加元素x
ls.pop(i)将列表ls中第i位置元素取出并删除该元素
ls.remove(x)将列表ls中出现的第一个元素x删除
ls.reverse()将列表ls中的元素反转

序列类型应用场景:
元素遍历、如果不希望数据被程序所改变,转换成元组类型

5:字典类型及其操作:
映射是一种键(索引)和值(数据)的对应、序列类型由0…N整数作为数据的默认索引。映射类型则由用户为数据定义索引
字典类型是“映射”的体现-键值对:键是数据索引的扩展-字典是键值对的集合,键值对之间无序-采用大括号{}和dict()创建,键值对用冒号: 表示、在字典变量中,通过键获得值
<字典变量> = {<键1>:<值1> , … , <键n>:<值n>}
值> = <字典变量>[<键>]
[ ] 用来向字典变量中索引或增加元素
<字典变量>[<键>] = <值>——增加新的键值对方法
type(x)返回变量x的类型,type函数的使用方法注意!!!

子典类型操作函数和方法
del d[k]删除字典d中键k对应的数据值
k in d判断键k是否在字典d中,如果在返回Tr u e,否则False
d.keys()返回字典d中所有的键信息
d.values()返回字典d中所有的值信息
d.items()返回字典d中所有的键值对信息
d.get(k, )键k存在,则返回相应值,不在则返回值,default:意思: 系统设定值; 预置值
d.pop(k, )键k存在,则取出相应值,不在则返回值,并更新d
d.popitem()随机从字典d中取出一个键值对,以元组形式返回,并更新d
d.clear()删除所有的键值对
len(d)返回字典d中元素的个数

ls.append(x),如果x是一个列表,则该列表作为一个元素增加的ls中。
创建字典时,如果相同键对应不同值,字典采用最后(最新)一个"键值对"。
序列类型总体上可以看成一维向量,如果其元素都是序列,则可被当作二维向量

6:jieba库的使用:
jieba是优秀的中文分词第三方库、中文文本需要通过分词获得单个的词语
分词原理:利用一个中文词库,确定中文字符之间的关联概率-中文字符间概率大的组成词组,形成分词结果-除了分词,用户还可以添加自定义的词组
jieba分词的三种模式:精确模式:把文本精确的切分开,不存在冗余单词-
全模式:把文本中所有可能的词语都扫描出来,有冗余-,不同角度来切分
搜索引擎模式:在精确模式基础上,对长词再次切分

jieba.lcut(s)精确模式,返回一个列表类型的分词结果

jieba.lcut(“中国是一个伟大的国家”)!!!!最重要使用
[‘中国’, ‘是’, ‘一个’, ‘伟大’, ‘的’, ‘国家’]
jieba.lcut(s, cut_all=True)全模式,返回一个列表类型的分词结果,存在冗余

jieba.lcut(“中国是一个伟大的国家”,cut_all=True)
[‘中国’, ‘国是’, ‘一个’, ‘伟大’, ‘的’, ‘国家’]
jieba.lcut_for_search(s)搜索引擎模式,返回一个列表类型的分词结果,存在冗余

jieba.lcut_for_search(“中华人民共和国是伟大的")
[‘中华’, ‘华人’, ‘人民’, ‘共和’, ‘共和国’, ‘中华人民共和国’, ‘是’, ‘伟大’, ‘的’]
ieba.add_word(w)向分词词典增加新词w

jieba.add_word(“蟒蛇语言”)

列表的sort方法:

第六天知识点:文件和数据格式化
1:文件的使用:
文件是数据的抽象和集合-文件是存储在辅助存储器上的数据序列-文件是数据存储的一种形式-文件展现形态:文本文件和二进制文件
文件的理解:文本文件vs. 二进制文件-文件文件和二进制文件只是文件的展示方式-本质上,所有文件都是二进制形式存储-形式上,所有文件采用两种方式展示
文本文件:由单一特定编码组成的文件,如UTF-8编码-由于存在编码,也被看成是存储着的长字符串-适用于例如:.txt文件、.py文件等
二进制文件:直接由比特0和1组成,没有统一字符编码-一般存在二进制0和1的组织结构,即文件格式-适用于例如:.png文件、.avi文件等

文件的打开和关闭:
打开:<变量名>= open(<文件名>, <打开模式>),注意路径一根"“要改为两根”\", 或者使用"/",源文件同目录可省路径
打开模式:
‘r’ 只读模式,默认值,如果文件不存在,返回FileNotFoundError
‘w’ 覆盖写模式,文件不存在则创建,存在则完全覆盖
‘x’ 创建写模式,文件不存在则创建,存在则返回FileExistsError
‘a’ 追加写模式,文件不存在则创建,存在则在文件最后追加内容
‘b’ 二进制文件模式
‘t’ 文本文件模式,默认值
‘+’ 与r/w/x/a一同使用,在原功能基础上增加同时读写功能
!!! 注意书写时要写成字符串的形式!!!
f.close()关闭文件!!!

文件内容的读取:
.read(size=-1) 读入全部内容,如果给出参数,读入前size长度,单位为字节!!,注意read是对全文本操作

s = f.read(2) 中国
.readline(size=-1)读入一行内容,如果给出参数,读入该行前size长度

s = f.readline() 中国是一个伟大的国家!
.readlines(hint=-1)读入文件所有行,以每行为元素形成列表,如果给出参数,读入前hint行

s = f.readlines() [‘中国是一个伟大的国家!’]

文件的写入:
.write(s)向文件写入一个字符串或字节流

f.write(“中国是一个伟大的国家!”)
.writelines(lines)将一个元素全为字符串的列表写入文件

ls = [“中国”,“法国”,“美国”]
f.writelines(ls) 中国法国美国————返回的是列表中所有元素的直接拼接,并且去掉了引号
f>.seek(offset)改变当前文件操作指针的位置,
offset含义如下:0 –文件开头;1 –当前位置;2 –文件结尾

f.seek(0) #回到文件开头
注意!!!,对文件进行了写操作后,指针默认跑到该文件的最后去了,若要打印写的内容,还应该改变文件指针的位置,利用seek方法
打开文件后采用close()关闭文件是一个好习惯。如果不调用close(),当前Python程序完全运行退出时,该文件引用被释放,即程序退出时,相当于调用了close()
同一个文件可以既采用文本方式打开,也可以采用二进制方式打开
请注意:for line in f获取的line包含每行最后的换行符(\n),所以,去掉该换行符进行统计,文件读取是按行读取,每行默认都会有一个换行符,空行就是空行,什么内容都不会有,包括换行符,判断是否为空行,就用 if line == “” 即可!!!

一维数据的格式化和处理:
维度:一组数据的组织形式
一维数据:由对等关系的有序或无序数据构成,采用线性方式组织,对应列表、数组和集合等概念
二维数据:由多个一维数据构成,是一维数据的组合形式
多维数据:由一维或二维数据在新维度上扩展形成
高维数据:仅利用最基本的二元关系展示数据间的复杂结构,eg:嵌套字典

一位数据的表示:如果数据间有序:使用列表类型列表类型可以表达一维有序数据-for循环可以遍历数据,进而对每个数据进行处理
如果数据间无序:使用集合类型-集合类型可以表达一维无序数据-for循环可以遍历数据,进而对每个数据进行处理

一维数据的存储:
存储方式一:使用空格进行分隔,使用一个或多个空格分隔进行存储,不换行。缺点:数据中不能存在空格
存储方式二:逗号分隔,使用英文半角逗号分隔数据进行存储,不换行。缺点:数据中不能有英文逗号
存储方式三:其他方式,-使用其他符号或符号组合分隔,建议采用特殊符号-缺点:需要根据数据特点定义,通用性较差

一维数据的处理:
存储 :将程序表示的数据写入文件
表示:将存储的数据读入程序

从空格分隔的文件中读入数据:使用 ls = txt.split()方法
从特殊符号分隔的文件中读入数据 使用 ls = txt.split("$"),利用字符串的split方法来进行操作,主要看字符串利用什么来进行分隔

一维数据的写入处理:
采用空格分隔方式将数据写入文件: 使用: f.write(’ ‘.join(ls)),在ls列表的每个元素后面加空格,然后拼装在一起
采用特殊分隔方式将数据写入文件: 使用:f.write(’$’.join(ls)), 还是主要看要用什么来分隔写入的字符

二维数据的格式化和处理:
二维数据的表示:使用列表类型-列表类型可以表达二维数据-使用二维列表,列表中嵌套列表即可,使用两层for循环遍历每个元素-外层列表中每个元素可以对应一行,也可以对应一列

CSV格式与二维数据存储:
CSV: Comma-Separated Values即采用逗号分隔的值,数据
国际通用的一二维数据存储格式,一般.csv扩展名-每行一个一维数据,采用逗号分隔,无空行-Excel和一般编辑软件都可以读入或另存为csv文件
注意!!!-采用CSV格式存储的数据,如果某个元素缺失,逗号仍要保留-二维数据的表头可以作为数据存储,也可以另行存储-逗号为英文半角逗号,逗号与数据之间无额外空格

二维数据的存储:一般索引习惯:ls[row][column],先行后列
二维数据的处理:
从CSV格式的文件中读入数据:
fo = open(fname)
ls = []
for line in fo :
line = line.replace("\n","" ) ## 去掉每行末尾的换行符,尤其注意这点
ls.append(line.split(",")) ## 生成的是嵌套列表
fo.close()
将数据写入CSV格式的文件:
ls = [[],[],[]] #二维列表
f = open(fname, ‘w’)
for item in ls:
f.write(’,’.join(item) + ‘\n’)
f.close()

一个函数可以有多个return, 但当其执行到第一个return时,函数必定会退出,不会去执行下面的return, return也可以递归调用函数名
注意:只要有槽,就一定可以去使用format函数,表达一些值
多用字符串、列表、字典等相关函数和方法,理解各个方法和函数的精确用法
注意!!! 只要是表达式可以计算其值的, python会自动去计算该表达式的值

看书总结的需要注意的知识点:

一个对象的哈希值在生命周期内不改变,就被成为 可哈希。可哈希性使得对象能够作为字典键或集合成员使用,因为这些数据结构要在内部使用哈希值。

可变容器(例如列表或字典)都不可哈希。所以,回过头来看文章开头的 TypeError ,就容易解释了,只有可哈希对象才能作为字典的键。

同样,文章开头的列表 a ,也不能作为集合成员使用
3 >= 1 ----- True(或的含义)
与或非逻辑返回值就参照学的逻辑即可 ----- 1 or 3 — 1 1 and 3 ---- 3
取反运算要考虑符号位的取反,结果可能为负数
身份运算符:is、not is ,判断两个标识符是不是引用自同一个对象,即两个标识符的内容是否一样
成员运算符:in、not in

python中每使用调用一次 input(),就输入一行的内容。输入内容有几行,就要用几次 input()
在python解释器中输入 dir(相关数据类型的符号)即可显示这些数据对象的内置方法eg:dir([])
在Python中,变量就是变量,他没有类型,所说的类型是变量所指内存中的对象的类型
注意!!!,如果循环被break语句终止,则与循环配套的else语句不会被执行,else语句只会在for语句顺利执行完毕,或者while语句条件为False时才会被执行

pass语句是空语句,主要为了保持程序结构的完整性。pass不做任何事情,一般用作占位语句。
当用户无法预计参数的数目时,可以使用*args类型的参数,*args代表一个元祖对象。args直接是元祖对象的变量名,**args代表一个字典对象,其中参数等号左边为键,右边为值,args直接是字典对象的变量名

Python中赋值的实质是传递对对象的一种引用,当一个变量的值赋值给另一个变量时,二者同时指向同一个内存空间,只要不改变二者指向的内存空间地址(组合数据类型改变值),改变其中一个对象的值,另一个也会改变,深刻理解指针指向同一个内存空间的含义

!!!注意:字符串的操作,切片如果不加步长,则一定是正向递增反向递减,才会满住某个范围的截取,如果有步长,则为左边开始截取的值,右边为结束,从左到右还是从右到左要根据正负值去判断,注意字符的最后一个为x[-1]

python内置函数集:
eval() 函数用来执行一个字符串表达式,并返回表达式的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

authenticcc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值