python+复习记录

来源:互联网 发布:淘宝网白色运动鞋 编辑:程序博客网 时间:2024/06/06 09:08

python复习记录

type():内置函数

列表List:定义符号是[],一种数据结构的类。
每个具体的列表都是一个对象,一个对象由若干元素组成的集合,元素之间被逗号(,)分割,列表的元素可以是同类型元素组成的混合列表,也可以是不同类型的元素组成的混合列表。

字典Dictionary:含有映射关系数据类型,定义符号是{},定义/调用字典中某个元素的语句和列表相同,都是方括号[<索引值>]。
字典的索引与元素必须成对存在,且没有默认索引序列,所以字典对象并没有.append()方法可以直接增补元素。任何时候都必须显式地同步指定索引与元素。在字典中,一般称索引为键(key),元素为值(value)。

关键字in:检查元素表是否存在于特定的集合中。
需要注意的是,in对于字典判断的是键而不是值。

打开文件open():返回的是文件类的对象,需要通过read()对象转换为字符。

正则表达式:

import re rule = '霸王'replace = 'Kaiser'target = '敢同恶鬼争高下,不向霸王让寸分'print(re.sub(rule,replace,target))
敢同恶鬼争高下,不向Kaiser让寸分
a={'a':1,'b':2,'c':3}for i in  a :    print(i)#i是字典的键值
bac

json模块是一种轻量级的数据交换格式

重要函数:编码,把一个python对象编码转换成json字符串 json.dumps();解码,把json格式字符串解码成python对象,json.loads()

python读写json文件

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。
JSON在python中分别由list和dict组成。
这是用于序列化的两个模块:
json: 用于字符串和python数据类型间进行转换
pickle: 用于python特有的类型和python的数据类型间进行转换
Json模块提供了四个功能:dumps、dump、loads、load
pickle模块提供了四个功能:dumps、dump、loads、load
json dumps把数据类型转换成字符串 dump把数据类型转换成字符串并存储在文件中  loads把字符串转换成数据类型  load把文件打开从字符串转换成数据类型
json是可以在不同语言之间交换数据的,而pickle只在python之间使用。json只能序列化最基本的数据类型,josn只能把常用的数据类型序列化(列表、字典、列表、字符串、数字、),比如日期格式、类对象!josn就不行了。而pickle可以序列化所有的数据类型,包括类,函数都可以序列化。

import jsontest_dict={"Kareem Abdul-Jabbar":'kareem@jizhi.im',    "Karl Malone":'karl@jizhi.im',    "Kobe Bryant":'kobe@jizhi.im',    "Michael Jordan":'michael@jizhi.im',    "Wilt Chamberlain":'wilt@jizhi.im',    "DIRK NOWITZKI":'dirk@jizhi.im',    "Shaquille O'Neal":'shaquille@jizhi.im',    "Moses Malone":'moses@jizhi.im',    "Elvin Hayes":'elvin@jizhi.im',    "LeBRON JAMES":'lebron@jizhi.im'}print(test_dict)print(type(test_dict))json_str = json.dumps(test_dict)#dumps:将python中的 字典 转换为 字符串print(json_str)print(type(json_str))
{'Wilt Chamberlain': 'wilt@jizhi.im', 'Kobe Bryant': 'kobe@jizhi.im', 'LeBRON JAMES': 'lebron@jizhi.im', 'Karl Malone': 'karl@jizhi.im', 'Moses Malone': 'moses@jizhi.im', 'DIRK NOWITZKI': 'dirk@jizhi.im', 'Kareem Abdul-Jabbar': 'kareem@jizhi.im', 'Michael Jordan': 'michael@jizhi.im', "Shaquille O'Neal": 'shaquille@jizhi.im', 'Elvin Hayes': 'elvin@jizhi.im'}<class 'dict'>{"Wilt Chamberlain": "wilt@jizhi.im", "Kobe Bryant": "kobe@jizhi.im", "LeBRON JAMES": "lebron@jizhi.im", "Karl Malone": "karl@jizhi.im", "Moses Malone": "moses@jizhi.im", "DIRK NOWITZKI": "dirk@jizhi.im", "Kareem Abdul-Jabbar": "kareem@jizhi.im", "Michael Jordan": "michael@jizhi.im", "Shaquille O'Neal": "shaquille@jizhi.im", "Elvin Hayes": "elvin@jizhi.im"}<class 'str'>
new_dict = json.loads(json_str)print(new_dict)#loads: 将 字符串 转换为 字典print(type(new_dict))
{'Wilt Chamberlain': 'wilt@jizhi.im', 'Kobe Bryant': 'kobe@jizhi.im', 'LeBRON JAMES': 'lebron@jizhi.im', 'Karl Malone': 'karl@jizhi.im', 'Moses Malone': 'moses@jizhi.im', 'DIRK NOWITZKI': 'dirk@jizhi.im', 'Kareem Abdul-Jabbar': 'kareem@jizhi.im', 'Michael Jordan': 'michael@jizhi.im', "Shaquille O'Neal": 'shaquille@jizhi.im', 'Elvin Hayes': 'elvin@jizhi.im'}<class 'dict'>
with open ('address.json','w') as f:    json.dump(test_dict ,f)#dump: 将数据写入json文件中with open('address.json', 'r') as f:    test_dict = json.load(f)#load:把文件打开,并把字符串变换为数据类型print(test_dict)print(type(test_dict))
{'Wilt Chamberlain': 'wilt@jizhi.im', 'Kobe Bryant': 'kobe@jizhi.im', 'LeBRON JAMES': 'lebron@jizhi.im', 'Karl Malone': 'karl@jizhi.im', 'Moses Malone': 'moses@jizhi.im', 'DIRK NOWITZKI': 'dirk@jizhi.im', 'Kareem Abdul-Jabbar': 'kareem@jizhi.im', 'Michael Jordan': 'michael@jizhi.im', "Shaquille O'Neal": 'shaquille@jizhi.im', 'Elvin Hayes': 'elvin@jizhi.im'}<class 'dict'>

元组
和列表非常相似,可以包含若干元素,并且调用的方式都是通过方括号在[]+索引的形式。
主要区别在于:元组用括号()定义,列表用方括号[]定义;元组不可更改;即使只有一个元素,也需要逗号,如果缺了这个逗号,得到的仍是元素本身,而不是元组;元组只能在定义时赋值,如果强行更改会得到解释器的错误。

def sum_times(x,y):              return (x+y),(x*y)sum_times(2,3)#返回的值存在元组中
(5, 6)

数据库

结构化存储数据的格式,为了更加灵活的处理数据,程序不再一次性将所有数据读入内存,而是根据具体需要进行查询,获得相应的数据集,完成这项工作的程序语言叫做SQL(Structured Query Language )

SQL是转为查询、操作数据库所用的语言。一个数据库由若干个表(table)组成,每个表又包含行(row)和列(column),一行代表一个样本,多列定义了各个维度上的属性。

python有专门处理SQLite语句的库。

import sqlite3
conn = sqlite3.connect(‘nbaallelo.db’)
cur = conn.cursor()

query = ‘SELECT elo_n,win_equiv FROM sheet LIMIT 5’

cur.execute(query)
elos = cur.fetchall()
conn.close()

print(elos)

连接对象:首先是建立与数据库的联系,sqlite3.connect()将返回Connection实例对象,然后存为conn变量,此时的conn对应的是整个数据库。

游标对象:Connection对象的.cursor()可以创建游标对象(cursor object)。游标对象可以对数据库执行SQL语句并进行更灵活的数据操作。

query是纯SQL语句,通过cur.execute()实际执行,此时数据库查询的结果仍在cur对象中。最后调用cur.fetchall()将查询结果全部返回,并存至变量elos,就是最终得到的元组列表。

如果只想返回一条查询结果,可以使用cur.fetchone()。

定义类的关键字是‘class’

在类的代码段中,再定义一个特别的函数:init(),init前后各有两条下滑线,本函数用以定义属性。
一个类有属性和方法,init()就是特殊的一种属性,当对象被创建时,就会被自动调用,init()函数以self为参数,在一个类的定义代码中,self指代的是当前创建过程中的对象。self总是init()的第一个参数,在创建对象时无需显式声明。

原创粉丝点击