python编程入门读书笔记2

数据结构

python中两大主力数据结构是列表和字典。列表按顺序存储数据,而字典像小型数据库,使用键高效的存储和检索数据。


type函数可以检查值或变量的数据类型。


序列是一组按顺序排列的值,python中有3种内置的序列类型:字符串、元组和列表。第一个正索引为0,指向左端。第一个负索引为-1,指向右端。也可使用切片表示法复制子序列,例如s[begin:end]从索引begin复制到end-1的元素。可使用+*进行拼接,要进行拼接序列的类型必须相同,不能元组和列表进行拼接。可使用len函数进行计算长度。表达式xin s检查序列s是否包含元素x,如果包含返回True否则返回False


元组

元组是一种不可变序列,包含零个或更多个值。元组用圆括号括起,其中元素用逗号分隔。如果要修改元组,就必须创建一个体现更改的新元组。如果需要频繁修改就将元组换成列表。单元素元组后面必须有逗号分隔。


x in tup#如果x是tup的元素返回True

len(tup)#元组tup包含的元素数

tup.count(x)#元素x在元组tup中出现的次数

tup.index(x)#元组tup中第一个元素x的索引



列表

列表是可变的,可在不复制的情况下,添加、删除或修改列表元素。列表用方括号括起其中元素用逗号分隔,列表可包含任何类型的值,空列表用[]表示。在处理列表的程序查找错误时,通常必须明白列表元素指向其值,而不是包含它们。当列表中有元素指向自身时,python能够识别出自引用。函数reverse不会制作列表的拷贝,而是直接删除列表的元素,因此我们说反转是就地完成的。


s.append()#在列表s末尾添加元素x

s.count()#返回元素x在列表s中出现的次数

s.extend(lst)#将lst中所有元素都添加到s中

s.index(x)#返回第一次x的索引

s.insert(i,x)#将元素x插入到索引i指定的元素前面,结果s[i]== x

s.pop(i)#删除并返回s中索引为i的元素

s.remove(x)#删除s中的第一个x元素

s.reverse()#反转s中元素的排列顺序

s.sort()#将s中的元素按升序排列



列表解析,也可使用列表解析进行筛选

n*n for n in range(1,11)

2*n+7 for n in range(1,11)

n**3 for n in range(1,11)

n for n in nums if n>0

c for c in s if c.lower()

c for c in s if c.lower() not in ‘aeiou’



字典

在存储键值对方面,python字典是一个效率极高的数据结构。字典也称为关联数组、散列表。字典利用了一个巧妙的编程诀窍-散列。从本质上说,字典的每个键值都被转换为一个数字-散列值。访问值时将提供的键值转换为散列值,再跳到列表相应的位置上。

字典中的键必须是独一无二的,而且键是不可变的。如果你预先不知道某个值是否包含在字典中,可使用keyin d进行检查。如果key包含在字典d中则返回True


d.items()#返回一个由字典d的键值对组成的视图

d.keys()#返回一个由字典d的键组成的视图

d.values()#返回一个由字典d的值组成的视图

d.get(key)#返回与key相关联的值

d.pop(key)#删除键key并返回与之想关联的值

d.popitem()#返回字典d中的某个键值对

d.clear()#删除字典d的所有元素

d.copy()#复制字典d

d.fromkeys(s,t)#创建一个新字典,其中的键来自s,值来自t

d.setdefault(key,v)#如果key包含在字典d中则返回其值,否则返回v并将(key,v)添加到字典d中。

d.update(e)#将e中的键值对添加到字典d中,e可能是字典,也可以是键值对序列。



集合

集合是一系列不重复的元素。集合类似于字典,但只包含键,而没有相关联的值。集合分两类:可变集合和不可变集合。集合最常用的的功能就是删除序列中的重复元素。


输入和输出

python提供了强大的基本文件I/O支持。


设置字符串格式

x= 1/81

print(x) #0.0123456790123

print(‘value:%.2f’%x)#0.01

print(‘value:%.5f’%x)#0.01235



d整数

o八进制

x小写十六进制

X大写十六进制

e小写科学计数法浮点数

E大写科学计数法浮点数

F浮点数

s字符串

%%字符



也可以使用format函数进行字符串的格式整理。

‘my{0} has {1}’.format(‘dog’,’fleas’)

输出:’mydog has fleas’

‘1/81= {x}’.format(x = 1/81)

输出:’1/81= 0.0123456790123’

‘num= {x:.{d}f}’.format(x = 1/81,d = 3)

输出:’num= 0.012’

‘num= {x:.{d}f}’.format(x = 1/81,d = 4)

输出:’num= 0.0123’

可以通过其设置精度,如果这都满足不了你,那么还有最后一招了,模块啊,可以使用 Cheetah模块或者 Django模块。


读写文件

文件是一个命名的比特集合,存储在硬盘、U盘、内存条等辅助存储设备中。文件分为两类:文本文件和二进制文件。其中前者本质上是存储在磁盘中的字符串,后者是其他各种内容。


os.getcwd()#返回当前工作目录的名称

os.listdir(p)#返回一个字符串列表,其中包含路径p指定的文件夹中所有文件名称

os.chdir(p)#将当前工作目录设置为路径p

os.path.isfile(p)#当路径p指定的是一个文件的名称,返回True

os.path.isdir(p)#当路径p指定的是一个文件夹的名称,返回True

os.stat(fname)#返回有关fname的信息,如大小和最后一次



如果只是想获悉当前工作目录下的.py文件,可使用下方的函数。

def list_py(path = None):

     if path == None:

<pre name="code" class="html">     path= os.getcwd()

<pre name="code" class="html">     return[fname for fname in os.listdir(path) 
     if os.path.isfile(fname)

     if fname.endswith(‘.py’)]
 
 



返回当前工作目录中所有文件的大小总和。

def size_in_bytes(fname):

     return os.stat(fname).st_size

def cwd_size_in_bytes():

     total= 0

     for name in files_cwd():

          total= total + size_in_bytes(name)

     return total




处理文本文件

逐行读取文本文件

#r读取w写入a在文件末尾输入b二进制模式t文本模式+为读写打开文件

def print_file1(fname):

     f= open(fname,’r’)

     for line in f:

          print(line,end= ‘’)

     f.close()



f.read()#读取文件

f.write(‘helloworld! \n’)#写入文件

f.seek(0)#让文件指针指向文件开头



pickle

pickle.dump将数据结构存储到磁盘中,之后可以使用pickle.load从磁盘获取数据结构。


读取网页

通过urllib模块    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值