输入
- 获取用户输入使用 input( )方法
模块
- 模块——可以将模块视为扩展,通过将其导入实现Python功能的扩展,导入关键字使用 import
执行脚本
- 从cmd执行Python脚本
- $python hello.py
- 在脚本的第一行表明解释器的位置即可在Linux中不必显示的调用Python解释器而执行脚本
注释
- Python中使用#或三引号(’’’ ‘’’)注释
字符串
-
单引号字符串以及对引号转义
- 引号必须成对使用
- 想要实现引号转义需要使用反斜杠(\) (方法一)
- 想要不对字符串进行转义可以使用长字符串(方法二)
- 想要不对字符串进行转义可以使用原始字符串(方法三)
-
字符串拼接
- 字符串拼接操作——将它们相加
-
str、repr和长字符串
- print(repr(‘Hello \nworld’))将输出原始字符串
- print(’’‘This is the content of str’’’)将输出原始字符串
Python的内建数据结构
- 序列Python中内置了多种序列——列表、元组、集合、字典
- Python支持一种数据结构对基本概念——容器
- 容器是可以包含其他对象对对象
- 两种主要的容器是序列(元组、列表)和映射(字典)
- 有一种既不是序列也不是映射对容器(集合)
通用的序列操作
-
①索引
- 使用正数从左往右(从0开始)
- 使用负数从右往左(从-1开始)
-
②切片
- 使用切片访问特定范围内的元素
- 切片的形式是一个区间,左闭右开
- 例子
str = 'hello' print(str[2:4])
- 切片的参数
- 起始索引
- 终止索引
- 步长
-
③序列相加
- 使用‘+’实现序列拼接的操作
-
④乘法
- 将序列乘n则重复创建此序列n次
- 空列表和初始化
- Python中使用None表示空值
- 创建一个容量为10的空列表
-
⑤成员资格
- 成员资格对判断结果是布尔类型(true和false)
-
⑥长度、最大值、最小值
- len()
- max()
- min()
列表
- 函数list()可以将任何序列作为参数(实际上list是一个类)
- 要将列表转换为字符串可以使用拼接函数 ‘’.join(somelist)
- 列表的基本操作
- ①修改列表,给元素赋值
- somelist[index] = value
- ②删除元素
- del somelist[index]
- ③给切片赋值
- somelist[start:end] = values or valuelist
- ①修改列表,给元素赋值
列表方法
- append()——将一个对象附加到列表到末尾
- clear()——就地清空列表到内容(将列表清空而不是将其中元素置为None)
- copy()——复制列表(常规的list2 = list1指向的是同一个列表,要想指向不同的列表需要复制)
- cout()——计算指定元素在列表中出现了多少次
- extend()——同时追加多个值到列表结尾,返回一个新的序列(此操作并非就地操作,不改变原列表)
- index()——在列表中查找指定值第一次出现的索引
- insert()——将一个对象插入到列表
- pop()——从列表中删除一个元素并返回这个元素(不传入参数默认删除和返回最后一个元素)
- pop()方法是唯一既修改列表又返回一个非None值的方法
- remove()——删除第一个指定值的元素,此方法修改列表但不返回值
- reverse()——翻序排列列表
- sort()——对列表排序
元组:不可修改的序列
- 元组是不可修改的
- 元组没有index和count方法
字符串
-
字符串的基本操作
- ①索引
- ②切片
- ③乘法
- ④成员资格检查
- ⑤长度
- ⑥最大值
- ⑦最小值
-
设置字符串格式
- 使用转换说明符(%s、%.3f等)
- 使用模板字符串
from string import Template
tmpl = “Hello my name is $name, I’m $age years old”
tmpl.substitute(name=“Li”, age=12) - 使用format函数
tmpl = “Hello my name is {}, I’m {} years old”.format(“Li”, 12)
tmpl = “Hello my name is {0}, I’m {1} years old”.format(“Li”, 12)
tmpl = “Hello my name is {name}, I’m {age} years old”.format(age=12, name=“Li”)
-
字符串方法
- center() 通过在字符串两端添加字符(默认为空格)使字符串居中
- find()在字符串中查找子串,找到返回子串第一个字符对索引
- join()——用于合并序列的元素
- lower()——返回字符串对小写版本
- title()——词首大写
- capwords()——词首大写
- replace()——将指定字符串替换
- split()——将字符串拆分成序列
- translate()——字符串替换方法,与replace不同对是它只能进行单字符替换,优势在于能够同时处理多个字符,因而效率比replace高
字典
- 字典由键及其相应的值组成,一个键值对称为一个项
- 函数dict()可以从其他映射或键值对序列创建字典,也可以使用关键字实参调用这个函数
- 字典的基本操作
- len(d)——返回字典d的长度(键值对的数量)
- d[k]——获取键为k的字典元素对值
- d[k] = v——关联键值
- del d[k]——删除键为k的项
- k in d——检查字典d中是否包含键为k的项
- 字典的基本性质
- 键的类型可以是任何不可变的类型(整数、浮点数、实数、字符串、元组)
- 自动添加
- 成员资格检查k in d查找的是键,v in l 查找的是值
- 字典方法
- format_map()将字符串格式设置功能用于字典
- clear()——就地清空字典,不返回值(或者说返回None)
- copy()——返回一个新字典,与原字典有相同的键值(这个方法执行浅复制)
使用深拷贝可以引用deepcopy模块的deepcopy方法
from copy import deepcopy - fromkeys()——使用指定的键创建一个空字典,值都是None,或添加参数指定值
- get()——get()方法为访问字典提供了宽松对环境,访问对键不在字典中时不会报错而是返回None,可以指定键不存在时返回对值
- items()——返回一个包含所有字典项的列表,每个元素都是键值对的形式,字典项排序不确定
- keys()——返回一个字典视图,包含指定字典中的键
- pop()——获取与指定键相关联的值,并将该键值对删除
- popitem()——类似于list.pop,但list.pop弹出列表中的最后一个元素,而popitem随机的弹出一个字典项,因为字典项是不确定的没有最后一项的概念
- setdefault()——获取指定键相关的值,还在字典中不包含指定的键时,在字典中添加指定对键值对
- update()——使用一个字典中的项来更新另一个字典,也就是说将另一个字典中的键值对与原字典合并,如果键名相同则进行替换
- values()——返回一个由字典中对值组成的字典视图,不同于keys,values返回对视图可能包含重复的值
其他语句
-
迭代字典
d = {‘x’:1, ‘y’:2, ‘z’:3}
for key in d:
print(key, 'corresponds to ', d[key])for key value in d.items(): print(key, 'corresponds to', value)
-
并行迭代
names = [‘anne’, ‘beth’, ‘george’, ‘damon’]
ages = [12, 45, 32, 102]
for i in range(len(names)):
print(names[i], ‘is’, ages[i], ‘years old’)for name, age in zip(name, ages): print(names[i], 'is', ages[i], 'years old')
-
迭代时获取索引
for string in strings:
if ‘xxx’ in string:
index = string.index(string)
strings[index] = ‘[censored]’index = 0 for string in strings: if 'xxx' in string: strings[index] = '[censored]' index += 1 for index, string in enumerate(strings): if 'xxx' in string: strings[index] = '[censored]'
生成式 生成器
- [x * x for x in range(10)]
- [(x,y) for x in range(5) for y in range(5,10)]
- 字典生成器
squares = {i:"{} squared is {}".format(i, i**2) for i in range(10)}
三人行 Python三个语句——pass、exec、eval
-
pass——占位符
-
exec()——将字符串作为代码执行
exec(‘hello world’)- 但是,调用exec时需要向它传递一个命名空间——用于放置变量的地方,否则代码将污染命名空间,修改其他变量
from math import sqrt
scope = {}
exec(‘sqrt = 1’, scope)
sqrt(4)
scope[‘sqrt’]
- 但是,调用exec时需要向它传递一个命名空间——用于放置变量的地方,否则代码将污染命名空间,修改其他变量
-
eval()——计算用字符串表示对Python表达式对值,并返回结果
面向对象函数
- callable(object)——判断对象是否是可调用的(是否是函数或方法)
- getattr(object, name[,default])——获取属性的值,提供默认值
- hasattr(object, name)——判断对象是否有指定属性
- isinstance(object, class)——判断对象是否是指定类的实例
- issubclass(A, B)——判断A是否是B对子类
- random.choice(sequence)——从一个非空序列中随机选择一个元素
- setattr(object, name, value)——将对象的属性设置为指定值
- type(object)——返回对象对类型
常用标准库
- sys
- argv——命令行参数,包括脚本名
- exit([arg])——退出当前程序,可通过可选参数指定返回值或错误信息
- modules——一个字典,将模块名映射到加载的模块
- path——一个列表,包含要在其中查找模块的目录名称
- platform——一个平台标识符如:sunos win32
- stdin——标准输入流,一个类似文件的对象
- stdout——标准输出流, 一个类似文件的对象
- stderr——标准错误流, 一个类似文件的对象
- os
- environ——包含环境变量的映射
- system(command)——在子shell中执行操作系统命令
- sep——路径中使用的分隔符
- pathsep——分隔不同路径对分隔符
- linesep——行分隔符(\n, \r或\n\r)
- urandom(n)——返回n个字符对加密随机数据
- time
- asctime——将时间元组转换为字符串
- localtime([secs])——将秒数转换为表示当地时间的日期元组
- mktime(tuple)——将时间元组转换为当地时间
- sleep(secs)——休眠
- strptime(string[, format])——将字符串转换为时间元组
- time()——当前时间(从新纪元开始后对秒数,以UTC为准)
- random
- random()——返回一个0~1的随机实数
- getrandbits(n)——以长整数方式返回n个随机的二进制位
- uniform(a, b)——返回一个a~b的随机实数
- randrange([start], stop, [step])——从range(start, stop, step)中随机选择一个数
- choice(seq)——从序列seq中随机选择一个元素
- shuffle(seq[, random])——就地打乱序列seq
- sample(seq, n)——从序列seq中随机选择n个不同的元素
- re
- compile(pattern[, flags])——根据包含正则表达式的字符串创建正则对象
- search(pattern, string[, flags])——在字符串中查找
- match(pattern, string[, flags])——在字符串开头匹配
- split(pattern, string[, maxsplit=0])——根据模式分隔字符串
- findall(pattern, string)——返回一个列表,包含所有与模式匹配的字符串
- sub(pat, repl, string[, count=0])——字符串替换
- escape(string)——对字符串中所有正则表达式特殊字符都进行转义
- group([group1, …])——获取与给定子模式匹配的子串
- start([group])——返回与给定编组匹配的子串的起始位置
- end([group])——返回与给定编组匹配的子串的终止位置(与切片一样,不包含终止位置)
- span([group])——返回与给定编组匹配的子串的起始和终止位置