数据结构
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模块