python基础和数据结构 二

数值

使用最多的为整数和浮点,大致和数学使用相同。

整形 int
数据大小限制,依靠硬件条件
在整形数据的运算中,大部和数学运算相同,但存在进制问题,在没用特殊指明进制时为10进制,(0b)表示2进制,(0o)表示8进制,(0x)表好似16进制,而十进制向各个进制的转化函数如下

Bin() 转为2进制
oct() 转为8进制
hex() 转为16进制

布尔型 boolean
python中存在特殊一类,布尔型,由Ture和Flase组成,是特殊的整数类型,其实际意义为1和0,较多用于判断最后产生的结果。

浮点型 float
和数学使用的小数类似
使用格式化占位符规定小数类型


```ruby
{0:.2f}.format(20)

意义:第一个数字 为2位小数

注意除法
在python中,存在 \ 和 \ \ ,二者代表意思不同。\为除法,保留小数单位,\ \为地板除,最终输出数据为最大的小于除法结果的整数,需要进行四舍五入保留结果的方法是round()

Decimal
和其他语言一样,在遇到浮点类型运算时,精度可能产生问题,如下:


IN  [41]: 1.2+1.33
Out[42]: 2.5300000000000002

python中提供了一个包,Decimal,可以使得数据精度及计算过程精度得以保证

使用:

Decimal(1)

注意:可以传递给Decimal整型或者字符串参数,但不能是浮点数据,因为浮点数据本身就不准确

from decimal import *
Decimal.from_float(12.222) 
 Decimal
 ('12.2219999999999995310417943983338773250579833984375')

设定有效数字

from decimal import *
getcontext().prec = 6
Decimal(1)/Decimal(7)
# 结果为Decimal('0.142857'),六个有效数字

保留小数位数

from decimal import *
Decimal('50.5679').quantize(Decimal('0.00'))
 #结果为Decimal('50.57'),结果四舍五入保留了两位小数

结果转化

from decimal import *
str(Decimal('3.40').quantize(Decimal('0.0')))
#结果为'3.4',字符串类型

字符串

在python中使用 “ ” 进行字符串的定义,字符串属于序列的一类。可通过字符串完成缩影等操作,但是字符串无法修改对象,智能创建新对象。同时字符串不能原位操作,即不能对其内部字母进行修改

常用函数:

s.replace(‘com’,’co’) 相当于新建立一个对象
s=s.join(a)           将字符串s和a相连
s.spilt(,),切割成列表
s.startwith(“url’)    以…为开头
s.endwith             以…为结尾
s.find(“a”)         找某个字符的位置
len(s)                获取s的长度

转义字符
为了处理无法通过字符实现的操作,通过转义字符实现

\\ 单斜杠
\’ 单引号
\’’ 双引号
\n  换行 
\b删除一格 
\t 空格

注意,在处理路径问题时,\的存在有其他含义,容易和转义字符成矛盾,此时一般使用\表示下一级或者在路径前方加 r

Path=r ’c:\abc\xas.txt’ 

格式化字符串
使用{}进行操作

{NAME}={SALARY}.FORMAT(NAME=”TOM,SALARY=””MOM)

字符串的加减乘操作
字符串支持加乘操作具体如下:

a="abc"
b=a*3
b
Out: 'abcabcabc'
a="abc"
b=“cbd”
c=a+b
c
Out: 'abccbd'

列表

任意对象集合,可变长度,可变序列

列表的定义:
通过函数list ( ) 或者 [ ] 进行定义

常见函数 :

l.append()    添加1个元素
l.extend([ ])   将原序列尾部添加一个序列中的元素
l.sort()        排序 正
i.reverse()     排序 反
l.pop()         弹出最后1个元素并删除
i.index()       返回序列值
i.count()       统计某种元素的个数
del             删除

注意:
(1) 指定对象是否一致

l1=[1,2,3]
l2=l1
l1[0]=2

在执行完此操作后,l2中的元素也发生变化,如果需l2的元素不发生变化,l2获得的应该是l1的副本。可使用l1.copy()或者l1[:]获取

(2)切片操作

l1[a:b:c]

此中的a表示l1切片的起始位置(包括),b表示l1切片的终止位置(不包括),c表示步长

(3)广播
在序列的运算中,如果运算对象时整个序列,那么序列中的每个元素都会受到影响

(4)当索引不存在时,无法添加数据,会出现错误

l1=[1,2,3]
l1*3
[3,6,9]

字典

一种键值对类型数据,又称哈希表,其特点为数据顺序随机

字典的定义:
通过函数dict ( ) 或者 [ ] 进行定义

常用函数

d.get(“prive”,0.0)              获取对应值,如果没有 不会抛出异常并写入
emp =dice(name=20,age=20)        通过函数声明,不需要引号
emp.update(dep)                  将dep更新至字典
emp.pop(“a”)                     弹出键为a的键值并删除
emp,keys()                       获取键
emp.values()                     获取值

注意:
(1)字典结构存贮的数据并无顺序一说,可人为对键进行排序

(2)键名:不能使用可变的值,如序列等

(3)存在双重字典表:

emp={"name":{"first":'nmm',"second":"nbb"}}
emp.get('name').get('first')   #第一张获取方法
emp['name'][firsr]             #第二章获取方法

(4)当键值对不存在时,可以直接添加

(5)定义字典模型

from collections import namedtuple
dep=namedtuple("name",["a","b"])
a=dep('bb', b="dnakd") #第一个默认第一个,后面的需要指出

元组

任意类型任意嵌套但不可变,位置固定。通过()进行定义

文件数据处理

1 常用函数

fire=open("文件地址")  #打开或创建文件
f.read()              # 以字符串形式读出文件,注意是以指针形式记录,下次读出为空            
f.readline()          #按行读出
f.readline()          #将类容以行为划分成序列
f.close()             #关闭文件

2 open 函数详解
open函数后常有2个参数,第一个为目标文件的地址位置,第二个参数为文件的打开类型,包括

  • r 读文件,文件只可以读取,无法修改
  • w 写文件,对文件进行编写并删除之前类容
  • a 追加,文件原先内容不变,对其进行添加
  • b二进制文件 文件为2进制未见

3 注意
1)中文问题
在文件中直接田间中文会造成乱码,可在打开文件时
使用以下格式,避免乱码

ff=open("course.txt",'w',encoding="utf8")

2)Pickle类 :文件保存数据类型
在文件保存时,对需要临时保存的数据需要保存数据类似时,使用pickle,使用方法如下:、

Pickle
import pickle
f=open("datafile.pkl","wb")
d={"a":1,"b":2}
pickle.dump(d,f)                    #将类型导入文件'
f.close()
f=open("datafile.pkl",'rb')
f.read
Out[38]: b'\x80\x03}q\x00(X\x01\x00\x00\x00aq\x01K\x01X\x01\x00\x00\x00bq\x02K\x02u.'
data=pickle.load(f)              #载入信息并导出

3)文件打开的一般格式:
在日常操作中,打开文件后需要及时关闭不然会产生很多问题。python提供一种方法可以避免此类问题,使用with

With opne(“dada”) as f

在with结束后自动关闭文件

发布了19 篇原创文章 · 获赞 0 · 访问量 567

猜你喜欢

转载自blog.csdn.net/lsy666aaa/article/details/104103007