字典
字典的键(key)是唯一的
读取字典用字典名+偏移量
创建字典的方式
按键赋值法
变量赋值法
元组列表法
字典的比较
min()
max()
zip()
字典的键(key)是唯一的
读取字典用字典名+偏移量
创建字典的方式
按键赋值法
变量赋值法
元组列表法
字典的比较
min()
max()
zip()
deque(maxlen=number) 只保留最后的number个元素
命名切片
name = slice()定义了一个叫name的切片
计算重复的元素
Counter (列表名)自动计算重复的元素和重复次数
列表:重要数据类型
列表中的对象可以是任何对象,列表是可变对象,支持原处修改的操作
Python列表是:
有序对象的有序集合
通过偏移读取
可变长度、异构以及任意嵌套
属于可变序列的分类
对象引用数组
列表的操作与字符串相同
列表的迭代
for i inlist:
print()
为了兼容Python 3 和 2的版本需要对数据进行适当的处理
列表的索引、分片和矩阵与字符串相同
matrix[i][j] = 值:矩阵 类似于二维数组
列表的排序:sort(key=str.lower())
reserve()你置列表
正则表达式的用法:
字符串忽略大小写的搜索替换,最长匹配
findall()& sub()
最短匹配模式
compile()
?表示0个或者1个
删除字符串中不需要的字符
strip()和rstrip()分别去掉开头护额结尾空白
字符串对齐ljust()和rjust()设置长度
合并拼接字符串
{}{}。format(,)
‘’.join(【】)
'hello{name}'.forma(name=‘snow’)
re模块:正则表达式
re.split(r'[,.;:\s]) \s表示空格
startswitch)()检查开头
endswitch()检查末尾
replace方法
from fnmatch import fnmatch,fnmatchcase
fnmatchcase严格区分大小写,而fnmath不区分大小写
find()查找子串
a是整数的 a无论和其他类型相加都会变成后面的形式 复数是最高的形式 浮点型和分数相加变成浮点型 整形-分数-浮点数 复数
and 使用会以 后面那个数为主 1 and 2 以2
除啦0以外
or是相反的
符号的连续
abs 是可以直接使用的函数 而fabs是math里面的一个函数 结果为浮点数
round函数 四舍五入 在2版本 是结果去的是浮点数 在3是整数
s数据类型
数字类型
python分为 整数 浮点数,复数 和其他(分数 无穷大 非数字Nan)
整数分为一般整数 和长整数
负数的个数比整数多一个 如果把零加入进去就相等
python3就没有区别整数只有一 个类型
bin 是二进制数 (以 0b开头) oct 是装换成为八进制(0o开头) 16进制以hex函数 对应便是 0x
python里浮点数是用64bit来存储 精度达到17为
repr()是一个函数 会选
复数 i改为j
两种表现形式
在python2里面小的数除以大的数是变成整数 为0 如果想要变成浮点数 再起后面添加一个小数点
python3是相反的直接变成浮点数
双斜杠直接变成整数 两个版本是一样的
python3 默认除成为一个浮点数
& 运算符 两者都是一 就唯一
|或有一个为1则都为1
python 优点 软件质量,开发效率 可移植性高 标准库的支持
解释器:解释器是一种让其他程序运行起来的程序,实际上,解释器是代码与计算机硬件之间的软件逻辑层,shell 就是我们常见的解释器 解释器在执行时每读一条语句,并且根据这条语句执行相应的操作然后在读入下一条语句
python可以认为是一款编程语言 我们安装一个名为解释器的软件包
执行 py将源码编译成为所谓的字节码的形式 编译就是一个简单的翻译的步骤,提高运行速度 python进程拥有写的权限 那么她回吧程序的字节码保存为一个.pyc扩展名的文件。pyc就是编译过的py源代码
虚拟机方式运行 字节码是通过pvm来执行
通过不同的方式打印单引号和双引号的应用
\n换行
运行shell文件: bash sh csh +文件名
运行pyhon文件:python +文件名
交互模式:〉〉〉
交互模式下比起文本模式,会有如下特点:
1文本前面不能有空格,否则会报错
2复合语句中第二行开始提示符会变成“。。。”
3用一个空行便是符合语句结束
#!/usr/bin/env python
标示符:有字母、数字、下划线组成,但不能以数字开头。
“”''
#注释
Python的函数-参数
特定的参数匹配模型 - 必须使用关键字传递
函数里的参数:
常规 - 有/无默认值
*args - 存放在列表
**args - 存放在字典。
在Python2.x里,参数顺序必须是 0个或多个常规参数 + 0个或1个*args +0个或
1个**args。
在Python3.0开始,在*args与**args中间可以加入一个“必须使用关键字传递的
参数”。
使用方法为是 0个或多个常规参数 + *或*args + “必须使用关键字传递的参数”
+ 0个或1个**args。
在不使用“必须使用关键字传递的参数”时,顺序与Python2.x相同。
\——转义符
\uffff unicode16位的16进制值
\xff 16进制值
\off 8进制值
\r 返回
\n 换行
\b 倒退
raw 不转译
len() 算长度
+合并
*重复
ord 转数字
chr 转字符
unichr 转Unicode
os.path.exists( )
任务12、Python字典
Python字典可存储任意类型对象,如字符串、数字、元组…… 优点:取值方便,速度快
1,创建字典
字典由键(key)和对应值(value)成对组成。字典也被称作关联数组或哈希表。基本语法如下:
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
注意:
每个键与值用冒号隔开(:),每对用逗号,每对用逗号分割,整体放在花括号中({})。
键必须独一无二,但值则不必。
值可以取任何数据类型,但必须是不可变的,如字符串,数组或元组。
2,访问字典中的值
print(d['key']) 如果写了不存在的值会报错
print(d.get('key')) 如果写了不存在的值,返回None
print(d.get('key','not find ')) 如果找不到存在的值,返回 “not find”
print(d.keys()) #获取所有的key 值 print(d.values()) #获取所有的value 值 if 'key' in d: #判断key是否存在 print('key') for k,v in d.items(): #遍历字典 print(k,v)
无须转换成list 格式,保留了字典原有的特性 for k in dict: print(k,dict[k]) print(k,dict.get(k)) 取值速度快,性能好
3,修改字典
d['key'] = value key 存在即修改,key不存在即新增 d.setdefault('key',value) 只能新增 4,删除字典元素
d.pop('key') 必须要传值,因为字典是无序的 d.popitem() 随机删除一个 del d['key'] d.clear() 清空字典
5,其他 print(dict.items()) 输出一个list格式(非真正意义上的list) print(list(dict.items())) 把字典的key 和 value 转成一个多维list
输出结果:
len
(
dict
):计算字典元素个数,即键的总数。
str
(
dict
):输出字典可打印的字符串。
type
(variable):返回输入的变量类型,如果变量是字典就返回字典类型。
6,字典的键必须初始化
如果视图访问一个字典中不存在的键,会导致一个keyerror。出行keyerror时,程序会由于运行时错误崩溃
用“in ”检查成员关系
if 'bananas' in fruits: fruits['bananas'] += 1 else : fruits['bananas'] = 1 查看“bananas”键是否在字典中,由于现在没有这个键,所以将它的值初始化为1,这样就能杜绝出行keyerror的可能性 用“not in ”替换 “in”
if 'bananas' not in fruits: fruits['bananas'] += 0 #初始化,如果需要 fruits['bananas'] += 1 使用setdefault 方法
for letter in word: if letter in vowels: found.setdefault(letter,0) found[letter] += 1 setdefault 可以保证把一个不存在的键初始化为一个指定的默认值,或者什么也不做(也就是说,已有的键的关联值将保持不变)
任务10、列表
一、创建列表:
(1)直接创建;a = []
(2) 列表推导
(3)赋值:
创建时赋值:a = [1, 2, 3]
元素赋值:a[0] = 1
(4)引用
listb = lista
(5)list()
list()可将元组、字符串转换为列表
二、基础操作
加:
>>> a = [1,2]
>>> b = [3, 4]
>>> a+b
[1, 2, 3, 4] #效率低于extend
乘
>>> a*3
[1, 2, 1, 2, 1, 2]
三、列表推导
通过一个列表而生成一个新列表时,可以使用列表推到。
好处:列表推导不会导致变量泄露的问题
(1)如,普通列表:codes = [ord(x) for x in symbols]
(2)如,笛卡尔积:thirts = [(color, size) for color in colors for size in sizes ]
(3)如,生成器,笛卡尔积:for thirts in ((color, size)for color in colors for size in sizes):
四、内置函数
五、切片:
整个数组
>>> a[:]
[1, 2, 3, 4]
复制列表(而不是引用)
>>> b = a[:]
>>> b
[0, 2, 4, 6, 8]
插入新值
>>> a[1:1] = [2,3,4]
>>> a
[1, 2, 3, 4, 2, 3, 4]
删除元素
>>> a[1:4] = []
>>> a
[1, 2, 3, 4]
正向切片
>>> a[:2]
[1, 2]
反向切片
>>> a[:-2]
[1, 2]
带步长切片
>>> a = list(range(0 , 99))
>>> a[12::10]
[12, 22, 32, 42, 52, 62, 72, 82, 92]
取索引为12的数,并且每隔13个再取
倒序
>>> a[::-1]
[4, 3, 2, 1]
倒序切片
>>> a[::-2]
[4, 2]
值相等
>>> a[:]==a
True
内存地址不相等
>>> id(a[:])==id(a)
False
六、数字列表:
(1)创建数字列表:list(range(start,end))
>>> a = list(range(0, 10))
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
(2)带步长的数字列表:
>>> a = list(range(0, 10, 2))
>>> a
[0, 2, 4, 6, 8]
(3)最大值,max(数字列表)
>>> max(a)
8
(4)最小值,min(数字列表)
>>> min(a)
0
(5)求和,sum(数字列表)
>>> sum(a)
20
任务8、字符串十三个场景-基本操作
基本操作以及各式汇总
1、去空格及特殊符号
s.strip().lstrip().rstrip(',')
2、复制字符串
#strcpy(sStr1,sStr2)
sStr1 = 'strcpy'
sStr2 = sStr1
sStr1 = 'strcpy2'
print sStr2
3、连接字符串
#strcat(sStr1,sStr2)
sStr1 = 'strcat'
sStr2 = 'append'
sStr1 += sStr2
print sStr1
4、查找字符
#strchr(sStr1,sStr2)
# < 0 为未找到
sStr1 = 'strchr'
sStr2 = 's'
nPos = sStr1.index(sStr2)
print nPos
5、比较字符串
#strcmp(sStr1,sStr2)
sStr1 = 'strchr'
sStr2 = 'strch'
print cmp(sStr1,sStr2)
6、扫描字符串是否包含指定的字符
#strspn(sStr1,sStr2)
sStr1 = '12345678'
sStr2 = '456'
#sStr1 and chars both in sStr1 and sStr2
print len(sStr1 and sStr2)
7、字符串长度
#strlen(sStr1)
sStr1 = 'strlen'
print len(sStr1)
8、将字符串中的大小写转换
S.lower() #小写
S.upper() #大写
S.swapcase() #大小写互换
S.capitalize() #首字母大写
String.capwords(S) #这是模块中的方法。它把S用split()函数分开,然后用capitalize()把首字母变成大写,最后用join()合并到一起
#实例:
#strlwr(sStr1)
sStr1 = 'JCstrlwr'
sStr1 = sStr1.upper()
#sStr1 = sStr1.lower()
print sStr1
9、追加指定长度的字符串
#strncat(sStr1,sStr2,n)
sStr1 = '12345'
sStr2 = 'abcdef'
n = 3
sStr1 += sStr2[0:n]
print sStr1
10、字符串指定长度比较
#strncmp(sStr1,sStr2,n)
sStr1 = '12345'
sStr2 = '123bc'
n = 3
print cmp(sStr1[0:n],sStr2[0:n])
11、复制指定长度的字符
#strncpy(sStr1,sStr2,n)
sStr1 = ''
sStr2 = '12345'
n = 3
sStr1 = sStr2[0:n]
print sStr1
12、将字符串前n个字符替换为指定的字符
#strnset(sStr1,ch,n)
sStr1 = '12345'
ch = 'r'
n = 3
sStr1 = n * ch + sStr1[3:]
print sStr1
13、扫描字符串
#strpbrk(sStr1,sStr2)
sStr1 = 'cekjgdklab'
sStr2 = 'gka'
nPos = -1
for c in sStr1:
if c in sStr2:
nPos = sStr1.index(c)
break
print nPos
14、翻转字符串
#strrev(sStr1)
sStr1 = 'abcdefg'
sStr1 = sStr1[::-1]
print sStr1
15、查找字符串
#strstr(sStr1,sStr2)
sStr1 = 'abcdefg'
sStr2 = 'cde'
print sStr1.find(sStr2)
16、分割字符串
#strtok(sStr1,sStr2)
sStr1 = 'ab,cde,fgh,ijk'
sStr2 = ','
sStr1 = sStr1[sStr1.find(sStr2) + 1:]
print sStr1
#或者
s = 'ab,cde,fgh,ijk'
print(s.split(','))
17、连接字符串
delimiter = ','
mylist = ['Brazil', 'Russia', 'India', 'China']
print delimiter.join(mylist)
18、PHP 中 addslashes 的实现
def addslashes(s):
d = {'"':'\\"', "'":"\\'", "\0":"\\\0", "\\":"\\\\"}
return ''.join(d.get(c, c) for c in s)
s = "John 'Johny' Doe (a.k.a. \"Super Joe\")\\\0"
print s
print addslashes(s)
19、只显示字母与数字
def OnlyCharNum(s,oth=''):
s2 = s.lower();
fomart = 'abcdefghijklmnopqrstuvwxyz0123456789'
for c in s2:
if not c in fomart:
s = s.replace(c,'');
return s;
print(OnlyStr("a000 aa-b"))
20、截取字符串
str = '0123456789′
print str[0:3] #截取第一位到第三位的字符
print str[:] #截取字符串的全部字符
print str[6:] #截取第七个字符到结尾
print str[:-3] #截取从头开始到倒数第三个字符之前
print str[2] #截取第三个字符
print str[-1] #截取倒数第一个字符
print str[::-1] #创造一个与原字符串顺序相反的字符串
print str[-3:-1] #截取倒数第三位与倒数第一位之前的字符
print str[-3:] #截取倒数第三位到结尾
print str[:-5:-3] #逆序截取,具体啥意思没搞明白?
21、字符串在输出时的对齐
S.ljust(width,[fillchar])
#输出width个字符,S左对齐,不足部分用fillchar填充,默认的为空格。
S.rjust(width,[fillchar]) #右对齐
S.center(width, [fillchar]) #中间对齐
S.zfill(width) #把S变成width长,并在右对齐,不足部分用0补足
22、字符串中的搜索和替换
S.find(substr, [start, [end]])
#返回S中出现substr的第一个字母的标号,如果S中没有substr则返回-1。start和end作用就相当于在S[start:end]中搜索
S.index(substr, [start, [end]])
#与find()相同,只是在S中没有substr时,会返回一个运行时错误
S.rfind(substr, [start, [end]])
#返回S中最后出现的substr的第一个字母的标号,如果S中没有substr则返回-1,也就是说从右边算起的第一次出现的substr的首字母标号
S.rindex(substr, [start, [end]])
S.count(substr, [start, [end]]) #计算substr在S中出现的次数
S.replace(oldstr, newstr, [count])
#把S中的oldstar替换为newstr,count为替换次数。这是替换的通用形式,还有一些函数进行特殊字符的替换
S.strip([chars])
#把S中前后chars中有的字符全部去掉,可以理解为把S前后chars替换为None
S.lstrip([chars])
S.rstrip([chars])
S.expandtabs([tabsize])
#把S中的tab字符替换没空格,每个tab替换为tabsize个空格,默认是8个
23、字符串的分割和组合
S.split([sep, [maxsplit]])
#以sep为分隔符,把S分成一个list。maxsplit表示分割的次数。默认的分割符为空白字符
S.rsplit([sep, [maxsplit]])
S.splitlines([keepends])
#把S按照行分割符分为一个list,keepends是一个bool值,如果为真每行后而会保留行分割符。
S.join(seq) #把seq代表的序列──字符串序列,用S连接起来
24、字符串的mapping,这一功能包含两个函数
String.maketrans(from, to)
#返回一个256个字符组成的翻译表,其中from中的字符被一一对应地转换成to,所以from和to必须是等长的。
S.translate(table[,deletechars])
# 使用上面的函数产后的翻译表,把S进行翻译,并把deletechars中有的字符删掉。需要注意的是,如果S为unicode字符串,那么就不支持 deletechars参数,可以使用把某个字符翻译为None的方式实现相同的功能。此外还可以使用codecs模块的功能来创建更加功能强大的翻译表。
25、字符串还有一对编码和解码的函数
S.encode([encoding,[errors]])
# 其中encoding可以有多种值,比如gb2312 gbk gb18030 bz2 zlib big5 bzse64等都支持。errors默认值为"strict",意思是UnicodeError。可能的值还有'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace' 和所有的通过codecs.register_error注册的值。这一部分内容涉及codecs模块,不是特明白
S.decode([encoding,[errors]])
26、字符串的测试、判断函数,这一类函数在string模块中没有,这些函数返回的都是bool值
S.startswith(prefix[,start[,end]])
#是否以prefix开头
S.endswith(suffix[,start[,end]])
#以suffix结尾
S.isalnum()
#是否全是字母和数字,并至少有一个字符
S.isalpha() #是否全是字母,并至少有一个字符
S.isdigit() #是否全是数字,并至少有一个字符
S.isspace() #是否全是空白字符,并至少有一个字符
S.islower() #S中的字母是否全是小写
S.isupper() #S中的字母是否便是大写
S.istitle() #S是否是首字母大写的
27、字符串类型转换函数,这几个函数只在string模块中有
string.atoi(s[,base])
#base默认为10,如果为0,那么s就可以是012或0x23这种形式的字符串,如果是16那么s就只能是0x23或0X12这种形式的字符串
string.atol(s[,base]) #转成long
string.atof(s[,base]) #转成float
任务5、字符串
一 Python中的字符串
1、介绍
字符串可以包含数字、字母、中文字符、特殊符号,以及一些不可见的控制字符,如换行符和制表符。
2、举例
>>> str1 ='abcd'
>>> str2 ='python'
>>> str3 ='123'
>>> str4 ='a = 1*7 + 8'
>>> str5 ='can\'t'
>>> str5
"can't"
>>> str6 ="can't"
>>> str6
"can't
3.转义
在需要在字符中使用特殊字符时,python用反斜杠(\)转义字符。如下表:
原始字符串
有时我们并不想让转义字符生效,我们只想显示字符串原来的意思,这就要用r和R来定义原始字符串。如:
print r'\t\r'
实际输出为“\t\r”。
基本操作:
1、去空格及特殊符号
s.strip().lstrip().rstrip(',')
2、复制字符串
#strcpy(sStr1,sStr2)
sStr1 = 'strcpy'
sStr2 = sStr1
sStr1 = 'strcpy2'
print sStr2
3、连接字符串
#strcat(sStr1,sStr2)
sStr1 = 'strcat'
sStr2 = 'append'
sStr1 += sStr2
print sStr1
4、查找字符
#strchr(sStr1,sStr2)
# < 0 为未找到
sStr1 = 'strchr'
sStr2 = 's'
nPos = sStr1.index(sStr2)
print nPos
5、比较字符串
#strcmp(sStr1,sStr2)
sStr1 = 'strchr'
sStr2 = 'strch'
print cmp(sStr1,sStr2)
6、扫描字符串是否包含指定的字符
#strspn(sStr1,sStr2)
sStr1 = '12345678'
sStr2 = '456'
#sStr1 and chars both in sStr1 and sStr2
print len(sStr1 and sStr2)
7、字符串长度
#strlen(sStr1)
sStr1 = 'strlen'
print len(sStr1)
8、将字符串中的大小写转换
S.lower() #小写
S.upper() #大写
S.swapcase() #大小写互换
S.capitalize() #首字母大写
String.capwords(S) #这是模块中的方法。它把S用split()函数分开,然后用capitalize()把首字母变成大写,最后用join()合并到一起
#实例:
#strlwr(sStr1)
sStr1 = 'JCstrlwr'
sStr1 = sStr1.upper()
#sStr1 = sStr1.lower()
print sStr1
9、追加指定长度的字符串
#strncat(sStr1,sStr2,n)
sStr1 = '12345'
sStr2 = 'abcdef'
n = 3
sStr1 += sStr2[0:n]
print sStr1
10、字符串指定长度比较
#strncmp(sStr1,sStr2,n)
sStr1 = '12345'
sStr2 = '123bc'
n = 3
print cmp(sStr1[0:n],sStr2[0:n])
11、复制指定长度的字符
#strncpy(sStr1,sStr2,n)
sStr1 = ''
sStr2 = '12345'
n = 3
sStr1 = sStr2[0:n]
print sStr1
12、将字符串前n个字符替换为指定的字符
#strnset(sStr1,ch,n)
sStr1 = '12345'
ch = 'r'
n = 3
sStr1 = n * ch + sStr1[3:]
print sStr1
13、扫描字符串
#strpbrk(sStr1,sStr2)
sStr1 = 'cekjgdklab'
sStr2 = 'gka'
nPos = -1
for c in sStr1:
if c in sStr2:
nPos = sStr1.index(c)
break
print nPos
14、翻转字符串
#strrev(sStr1)
sStr1 = 'abcdefg'
sStr1 = sStr1[::-1]
print sStr1
15、查找字符串
#strstr(sStr1,sStr2)
sStr1 = 'abcdefg'
sStr2 = 'cde'
print sStr1.find(sStr2)
16、分割字符串
#strtok(sStr1,sStr2)
sStr1 = 'ab,cde,fgh,ijk'
sStr2 = ','
sStr1 = sStr1[sStr1.find(sStr2) + 1:]
print sStr1
#或者
s = 'ab,cde,fgh,ijk'
print(s.split(','))
17、连接字符串
delimiter = ','
mylist = ['Brazil', 'Russia', 'India', 'China']
print delimiter.join(mylist)
18、PHP 中 addslashes 的实现
def addslashes(s):
d = {'"':'\\"', "'":"\\'", "\0":"\\\0", "\\":"\\\\"}
return ''.join(d.get(c, c) for c in s)
s = "John 'Johny' Doe (a.k.a. \"Super Joe\")\\\0"
print s
print addslashes(s)
19、只显示字母与数字
def OnlyCharNum(s,oth=''):
s2 = s.lower();
fomart = 'abcdefghijklmnopqrstuvwxyz0123456789'
for c in s2:
if not c in fomart:
s = s.replace(c,'');
return s;
print(OnlyStr("a000 aa-b"))
20、截取字符串
str = '0123456789′
print str[0:3] #截取第一位到第三位的字符
print str[:] #截取字符串的全部字符
print str[6:] #截取第七个字符到结尾
print str[:-3] #截取从头开始到倒数第三个字符之前
print str[2] #截取第三个字符
print str[-1] #截取倒数第一个字符
print str[::-1] #创造一个与原字符串顺序相反的字符串
print str[-3:-1] #截取倒数第三位与倒数第一位之前的字符
print str[-3:] #截取倒数第三位到结尾
print str[:-5:-3] #逆序截取,具体啥意思没搞明白?
21、字符串在输出时的对齐
S.ljust(width,[fillchar])
#输出width个字符,S左对齐,不足部分用fillchar填充,默认的为空格。
S.rjust(width,[fillchar]) #右对齐
S.center(width, [fillchar]) #中间对齐
S.zfill(width) #把S变成width长,并在右对齐,不足部分用0补足
22、字符串中的搜索和替换
S.find(substr, [start, [end]])
#返回S中出现substr的第一个字母的标号,如果S中没有substr则返回-1。start和end作用就相当于在S[start:end]中搜索
S.index(substr, [start, [end]])
#与find()相同,只是在S中没有substr时,会返回一个运行时错误
S.rfind(substr, [start, [end]])
#返回S中最后出现的substr的第一个字母的标号,如果S中没有substr则返回-1,也就是说从右边算起的第一次出现的substr的首字母标号
S.rindex(substr, [start, [end]])
S.count(substr, [start, [end]]) #计算substr在S中出现的次数
S.replace(oldstr, newstr, [count])
#把S中的oldstar替换为newstr,count为替换次数。这是替换的通用形式,还有一些函数进行特殊字符的替换
S.strip([chars])
#把S中前后chars中有的字符全部去掉,可以理解为把S前后chars替换为None
S.lstrip([chars])
S.rstrip([chars])
S.expandtabs([tabsize])
#把S中的tab字符替换没空格,每个tab替换为tabsize个空格,默认是8个
23、字符串的分割和组合
S.split([sep, [maxsplit]])
#以sep为分隔符,把S分成一个list。maxsplit表示分割的次数。默认的分割符为空白字符
S.rsplit([sep, [maxsplit]])
S.splitlines([keepends])
#把S按照行分割符分为一个list,keepends是一个bool值,如果为真每行后而会保留行分割符。
S.join(seq) #把seq代表的序列──字符串序列,用S连接起来
24、字符串的mapping,这一功能包含两个函数
String.maketrans(from, to)
#返回一个256个字符组成的翻译表,其中from中的字符被一一对应地转换成to,所以from和to必须是等长的。
S.translate(table[,deletechars])
# 使用上面的函数产后的翻译表,把S进行翻译,并把deletechars中有的字符删掉。需要注意的是,如果S为unicode字符串,那么就不支持 deletechars参数,可以使用把某个字符翻译为None的方式实现相同的功能。此外还可以使用codecs模块的功能来创建更加功能强大的翻译表。
25、字符串还有一对编码和解码的函数
S.encode([encoding,[errors]])
# 其中encoding可以有多种值,比如gb2312 gbk gb18030 bz2 zlib big5 bzse64等都支持。errors默认值为"strict",意思是UnicodeError。可能的值还有'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace' 和所有的通过codecs.register_error注册的值。这一部分内容涉及codecs模块,不是特明白
S.decode([encoding,[errors]])
26、字符串的测试、判断函数,这一类函数在string模块中没有,这些函数返回的都是bool值
S.startswith(prefix[,start[,end]])
#是否以prefix开头
S.endswith(suffix[,start[,end]])
#以suffix结尾
S.isalnum()
#是否全是字母和数字,并至少有一个字符
S.isalpha() #是否全是字母,并至少有一个字符
S.isdigit() #是否全是数字,并至少有一个字符
S.isspace() #是否全是空白字符,并至少有一个字符
S.islower() #S中的字母是否全是小写
S.isupper() #S中的字母是否便是大写
S.istitle() #S是否是首字母大写的
27、字符串类型转换函数,这几个函数只在string模块中有
string.atoi(s[,base])
#base默认为10,如果为0,那么s就可以是012或0x23这种形式的字符串,如果是16那么s就只能是0x23或0X12这种形式的字符串
string.atol(s[,base]) #转成long
string.atof(s[,base]) #转成float
任务4、动态类型简介
在python中,省去了变量声明的过程,在引用变量时,往往一个简单的赋值语句就同时完成了,声明变量类型,变量定义和关联的过程,那么python的变量到底是怎样完成定义的呢?
python使用动态类型和他提供的多态性来提供python语言的简洁灵活的基础。在python中我们是不会声明所使用对象的确切类型的。所谓的python动态类型,就是在程序运行的过程中自动决定对象的类型。
当我们在赋值一个变量时,在python中其实自动做了很多事情。
1.创建变量:当代码第一次赋值给一个变量时就创建了这个变量,在之后的赋值过程关联值,python在代码运行之前先检验变量名,可以当成是最初的赋值创建变量。
2.变量声明:python中类型只存在于对象中,而不是变量,变量是通用的,他只是在程序的某一段时间引用了某种类型的对象而已,比如定义a =1 ,a = 'a',一开始定义了变量a为指向了整型的对象,然后变量又指向了字符串类型的变量,可见,变量是不固定的类型。
3.变量使用:变量出现在表达式中就会马上被对象所取代,无论对象是什么内类型,变量在使用前必须要先定义。
值得注意的是,变量必须在初始化名字之后才能更新他们,比如计数器初始化为0,然后才能增加他。
也就是说,当我们给变量赋值的时候,比如a=3,python执行三个不同操作去完成赋值。
1.创建一个对象代表3,
2.如果程序中没有变量a,则创建他。
3.将变量与对象3连接起来。
变量与对象是连接关系,它们存储在内存的不同位置,如果有列表嵌套这样大的对象,对象还连接到它包含的对象。这种从变量到对象的连接称为引用。
变量的引用以内存中的指针形式实现。一旦变量被使用,那么python自动跟变量的对象连接。具体来说:
1.变量是系统表的元素,他指向对象存放的地址空间。
2.对象是分配的一块内存,地址可被连接,有足够大空间代表对象的值,
3.引用的过程自动完成变量指向对象地址的过程,即从变量到对象的指针。
每个对象都有两个标准头部信息,一个是类型标志符,用于标记对象类型,另一个是引用计数器,用来决定是不是可回收对象。很显然,在python中只有对象才有类别区分,变量不过是引用了对象,变量并不具有类别区分,他只是在特定时间引用某个特定对象。
对于引用计数器的使用,则关联到python的垃圾回收机制,当当一个变量名赋予了一个新的对象,那么之前旧的对象占用的地址空间就会被回收。旧对象的空间自动放入内存空间池,等待后来的对象使用。
计数器在垃圾回收的过程中有事如何工作的呢?计数器记录的是当前指向对象的引用数目,如果在某时刻计数器设置为0,则表示未被引用,name这个对象的内存空间就会收回。
对象的垃圾回收有着很大的意义,这使得我们在python中任意使用对象而且不需要考虑释放空间,省去了C与C++中大量的基础代码。
在Python中先创建一个对象,然后再将变量指向所创建的对象。
对于每个对象,都有一个头部信息,在信息中就标记了这个对象的类型信息。每当一个变量名被赋予了一个新的对象,之前那个对象占用的空间就回被回收(如果此时这个对象没有被别的变量名或者对象所引用的话)。另外,在python中,每个对象都保有一个计数器,计数器中记录了这个对象被引用的次数,当这个计数器被置为0时,对象所占用的内存空间就会被释放,即当做垃圾回收。
共享引用:
在python中,变量总是一个指向对象的指针,而不是可以改变的内存区域标签。给一个变量赋予一个新的值,不是替换了原始的对象,而是让这个变量去引用一个新的对象,实际效果就是对变量重新赋值,这仅仅会影响到那个被重新赋值的变量。
另外,在这里说一下 “ == ”和“ is ”这个操作符
==,和C语言中的作用是一样的,测试两个被引用的对象的值是否一致;
is,检查两个对象的同一性,判断两个对象名是否指向同一地址空间,如果是则返回True。
任务3、 数字(二)
一、运算符应用
值得注意的是。
二、基本函数
应用和示例
Python内置了很多的函数:
http://docs.python.org/3/library/functions.html#abs
元祖不能在原处更改
dict.get('b',0) 字典里 没有b键时,返回0
list(dict.values()) 显示所有键的值
list(dict.items()) 显示键及对应的值