Python 语法基础
近段时间学习了下Python,于是大略总结了下所学的语法知识:
列表的创建:
1
movies = ["The Holy Grail", 1975, "Terry Jones & Terry Gilliam", 91,["Graham Chapman", ["Michael Palin", "John Cleese", "Terry Gilliam", "Eric Idle", "Terry Jones"]]]
这里是一个嵌套列表的创建,其中的中括号也可以换成大括号,双引号可以用单引号代替,列表里面可以是混合的数据。常用的方法有 :
append()
:在列表末尾增加一个数据项pop()
:在列表的末尾删除数据extend(数据项集合)
:在列表的末尾添加一个数据项集合remove(项)
:删除一个特定数据的项insert(序号, 数据项)
:在指定序号的前面插入数据项
列表的遍历之
for
循环:
列表的遍历需要用到for
循环,其基本语法是:for 变量 in 列表项:
,由此可以将列表中的每一项(只会遍历一级列表)通过print()
函数输出。嵌套列表的遍历之
if
判断:
对于嵌套列表的遍历,需要判断for
循环时每一项是否是列表项,因此需要用到if
判断语句和isinstance
,isinstance(变量, list)
用于判断是否是列表,if
的语法是:1
2
3
4if 某个条件满足:
True组
else:
False组嵌套列表的遍历之定义函数:
上述最多只能够处理一层嵌套的列表,如果希望处理多层嵌套的列表则需要定义函数并去递归调用,其基本语法是:1
2def 函数名(参数):
代码块转换为模块:
代码块保存为 .py 文件,创建 setup.py 的文件,包含如下内容:1
2
3
4
5
6
7
8
9
10from distutils.core import setup
setup(
name='HelloWorld',
version='1.0.0',
py_modules=['nester'],
url='http://www.headfirstlabs',
author='firstdream',
author_email='firstdream10@icloud.com',
description='A simple printer of nested lists'
)构建发布文件 (windows 下):
python setup.py sdist
安装 Python 副本到本地:
python setup.py install
导入模块:
import 模块名
向 PyPl 上传代码:
python setup.py register(第一次上传)
python setup.py sdist upload
常用 BIF
1
2
3
4
5
6
7
8
9
10
11
12
13
14#创建一个空的列表
list()
#返回一个迭代器,根据需要生成一个指定范围的数字,常配合 for 循环使用
range()
for num in range(4):
print(num)
#创建成对数据的一个编号列表,从 0 开始
enumerate()
#将一个字符串或另一个数转换为一个整数(如果可行)
int()
#返回一个 Python 数据对象的唯一标识
id()
#返回一个可迭代数据结构中的下一项
next()为函数提供默认参数 def 函数名(参数=缺省值):
2016.10.7
文件操作
1
2
3
4
5
6
7
8
9
10
11
12#以默认的 r 模式打开文件
the_file = open("文件名")
#以 w 模式打开文件
out = open("文件名", "w")
#关闭文件
the_file.close()
#读取文件数据行
the_file.readline()
#返回文件起始位置
the_file.seek(0)
#写入数据到文件
print("内容", file=文件对象名)异常处理
1
2
3
4
5
6
7
8
9
10
11
12
13
14try:
可能发生错误的代码
except:
错误恢复代码
finally:
最后的执行代码
#数据不符合期望的格式时会出现 ValueError
#数据无法正常访问时会出现 IOError
#用with处理文件,可不需要 finally 模块
try:
with open() as data:
代码
except 异常:
代码其余方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18#显示当前目录及更改当前目录
import os
os.getcwd()
os.chdir("路径")
#split() 分割字符串,返回一个字符串列表
(role, line_spoken) = each_line.split(":")
#利用 split 的可选参数指定为两部分
split(":", 1)
#find() 查找字符串
each_line.find(":")
#not 取反判断条件
if not each_line.find(':') == -1:
#pass 作为Python的空语句或null语句
#strip() 方法从字符串中去除不想要的空白符
line_spoken.strip()
#str() 可以用来访问任何数据对象的字符串表示
#locals() 返回当前作用域中的变量集合
if 'man_file' in locals():
2016.10.15
pickle "腌制"数据和恢复数据
Python 提供了一个标准库 pickle 用于保存和加载 Python 的数据对象,使用方法:
1
2
3
4
5
6
7
8import pickle
...
#pickle 处理文件数据时必须以二进制访问
with open('mydata.pickle', 'wb') as mysavedata:
pickle.dump([1, 2, ''three], mysavedata)
...
with open('mydata.pickle', 'rb') as myrestoredata:
a_list = pickle.load(myrestoredata)列表推导 列表推导用于减少转换列表时的代码量
1
2
3
4
5新列表 = [转换函数(t) for t in 原列表]
new_l = []
for t in old_l:
new_l.append(len(t))
new_l = [len(t) for t in old_l]集合 set Python 提供一种名为集合的数据结构,集合中的数据是无序的,而且不允许重复 创建集合:
1
2
3#set() -> new empty set object
#set(iterable) -> new set object
集合名 = set(object)字典 字典将 value 和 key 关联,使用字典:
1
2
3
4
5
6#创建字典
字典名 = {}
字典名 = dict()
#增加数据
字典名[key] = value #vlaue可以为任意数据类型
字典名 = {’key‘:value, 'key':value}类
1
2
3
4
5
6#定义类
class 类名:
def _init_(self):
#初始化对象的代码
#创建对象实例
对象 = 类名()继承
1
2
3class 类名(继承的类名):
def _init_(self, 参数):
#初始化对象的代码其它
print(列表[-1])
输出最后一个数据项
strip()
方法可以从字符串中去除不想要的空白符
in
操作符用于检查成员关系
原地排序sort()
,原列表顺序改变
复制排序sorted()
,返回一个排序过的原列表副本
分片访问列表列表[起始值:结束值]
可以访问起始到结束(不包括结束值)的列表项