200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 跟着ALEX 学python day2 基础2 模块 数据类型 运算符 列表 元组 字典 字符串的常用操作...

跟着ALEX 学python day2 基础2 模块 数据类型 运算符 列表 元组 字典 字符串的常用操作...

时间:2021-12-20 14:41:12

相关推荐

跟着ALEX 学python day2 基础2  模块  数据类型   运算符 列表 元组  字典  字符串的常用操作...

声明 :

文档内容学习于

/xiaozhiqi/

模块初始:

Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相应的Python库支持,以后的课程中会深入讲解常用到的各种库,现在,我们先来象征性的学2个简单的。

模块 就像一个个库。

有公共库 和第三方的库

基础格式

import sys(模块名称)

这边需要 模块的名字不要和 文件的名一致 , 因为默认情况下,他的模块会先从本地目录的文件中寻找,而你的自己的文件又不是这个库,所以会报错(python3这里的逻辑有优化,有时不会报错)。 所以这边的话。文件名一定不能和模块名相一致。

模块与文件名不一致。

sys.path

这个模块是打印 python 调用库的 环境变量的。

[root@master day1]# cat sys_mid.py #!/usr/bin/env python3import sysprint (sys.path)[root@master day1]# ./sys_mid.py ['/root/python/day1', '/usr/local/python3/lib/python36.zip', '/usr/local/python3/lib/python3.6', '/usr/local/python3/lib/python3.6/lib-dynload', '/usr/local/python3/lib/python3.6/site-packages'

在windows 上面 然后 一般的标准库,都会在 lib下面

可以看到 里面会有好多的py 文件。 就是标准库

然后 一般第三方库的会在 site-package 下面 。

sys.argv

这个是打印 文件的相对路径的

[root@master day1]# cat sys_mid.py #!/usr/bin/env python3import sysprint (sys.argv)[root@master day1]# ./sys_mid.py ['./sys_mid.py']

os

可以用于和系统交互的模块,比如使用shell指令。

os.system

系统交互

[root@master day1]# cat sys_mid.py #!/usr/bin/env python3import osos.system("ls")[root@master day1]# ./sys_mid.py for.pyguess.py interaction.py passwd.py print.py sys_mid.py var2.py var.py

但是system这个模块 只能进行执行(执行结果输出屏幕),不能进行存储结果(变量)。 如下 只能有os的执行输出, 但是当os是变量时候, 其实是没有输出内容的,只有一个执行的结果。

[root@master day1]# cat sys_mid.py #!/usr/bin/env python3

import oscmd_re = os.system("ls")print ("-->",cmd_re)

[root@master day1]# ./sys_mid.py for.pyguess.py interaction.py passwd.py print.py sys_mid.py var2.py var.py--> 0

os.popen("指令").read()

这个指令分2部分,os.popen("指令"),可以将执行的内容存储到内存地址中。然后read()可以读取。

[root@master day1]# cat sys_mid.py #!/usr/bin/env python3import oscmd_re = os.popen("ls").read()print ("-->",cmd_re)

[root@master day1]# ./sys_mid.py --> for.pyguess.pyinteraction.pypasswd.pyprint.pysys_mid.pyvar2.pyvar.py

如上可以看到。还是格式化输出的。

os.mkdir

创建目录

[root@master day1]# cat sys_mid.py #!/usr/bin/env python3import osos.mkdir("new_dir")

当前目录下面,创建了新的目录 。

导入第三方的模块

以上我们都是使用的 系统自带的模块。其实我们也可以使用 第三方的模块

使用自建的模块, 其实就是自己写个脚本。 然后使用 另一个 py文件来调他就行了。

[root@master python]# lsfor.py login.py passwd.py __pycache__ sys_mod.py[root@master python]# cat login.py #!/usr/bin/env python3username = "ricky"passwd = 123name = input( "name:")password = int( input ("passwd:"))if username == name and passwd == password:print ( name,"wlecome")else:print ("incorrent user")[root@master python]# cat sys_mod.py #!/usr/bin/env python3import login #直接调用前面自己编写的模块

[root@master python]# ./sys_mod.py name:rickypasswd:123ricky wlecome

但是我们这个使用2个脚本是在同一个目录下面。如果不在同一个目录下面 。执行则会报错

然后如果要调用其他目录的 模块。 之前有说过。python会自动到他的系统路径下面去寻找模块。 然后我们只要把脚本放到 site-package 这个第三方的库的目录中就可以了

我们把文件复制进去。

然后我们看 就算同目录下面 没有 那个login的模块文件 也可以执行了。

数据类型:

核心数据类型:

数字:int, long(python3.5已经没有), float, complex, bool字符:str, unicode列表:list字典:dict元组:tuple集合:set(可变集合),frozenset(不可变集合)文件:file

数字类型:

python的数字字面量:整数,布尔型,浮点数,复数,所有数字类型均为不可变

int(整型)

在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647

在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807

bool(布尔型)

真或假 1 或 0

float(浮点型)

数字操作:+ , -, *, /, //, **, %, -x, +x

bytes 和 string 转换

参考文档:

/zanjiahaoge666/p/6402907.html

字符串转 2进制bytes

使用encode

mag = ("哈哈哈")print( mag )print( mag.encode()) #在python3中 如果不指定字符集, 默认就是utf-8。 python2不行。print( mag.encode(encoding="utf-8")) #效果同上

执行结果一样

2进制bytes转 字符串

可以使用decode

print( mag )print( mag.encode())print( mag.encode(encoding="utf-8"))print( mag.encode(encoding="utf-8").decode())#可以使用decode转, 一样的,如果不指定字符串,默认是utf-8print( mag.encode(encoding="utf-8").decode(encoding="utf-8")) # 执行结果如上

执行结果一样

算术运算符

以下假设变量: a=10,b=20:

[root@master day1]# cat calculation.sh #!/usr/bin/env python3a = 21b = 10c = 0c = a + bprint ( "a+b:", c)c = a - b print ( "a-b:", c)c = a * bprint ( "a*b:", c)c = a / bprint ( "a/b:", c)c = a % bprint ( "a%b:", c)a = 21b = 10c = a**bprint ("a**b:",c )a = 10b = 5 c= a//bprint ("a//b:", c )

[root@master day1]# ./calculation.sh a+b: 31a-b: 11a*b: 210a/b: 2.1a%b: 1a**b: 16679880978201a//b: 2

Python比较运算符

以下假设变量a为10,变量b为20:

Python赋值运算符

[root@master day1]# cat calculation.sh #!/usr/bin/env python3a = 21 b = 10c = 0c = a + bprint ("a+b:",c)c += aprint ("c +=a == c = c + a:",c)c *= aprint ("c *=a == c = c * a:",c)c /= aprint ("c /=a == c = c / a:",c)c %= a print ("c %=a == c = c % a:",c)c **= aprint ("c **= a == c = c ** a:",c)c //= a print ("c //= a == c = c // a:", c)[root@master day1]# ./calculation.sh a+b: 31c +=a == c = c + a: 52c *=a == c = c * a: 1092c /=a == c = c / a: 52.0c %=a == c = c % a: 10.0#这个是取摸。 c=52 a=21 返回除法的余数(整除的余数) 52 整除不了21 52 = 21*2+10 c **= a == c = c ** a: 1e+21 # 10的21次方c //= a == c = c // a: 4.761904761904762e+19

Python逻辑运算符

Python语言支持逻辑运算符,以下假设变量 a 为 10, b为 20:

Python成员运算符

除了以上的一些运算符之外,Python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。

[root@master day1]# cat calculation.sh #!/usr/bin/env python3a = 10b = 20list = [ 1, 2, 3, 4, 5];print ("a=",a, "b=",b)if ( a in list):print ("a in list")else:print ( "a not in list")if ( b not in list):print ("b not in list")else:print ("b in list")a =2print ("a=",a)if ( a in list):print ("a in list")else:print ("a not in list")[root@master day1]# ./calculation.sh a= 10 b= 20a not in listb not in lista= 2a in list

Python身份运算符

身份运算符用于比较两个对象的存储单元

其实 is 和 “=” 作用类似。 但是有区别

is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等。

>>> a = [1, 2, 3]>>> b = a>>> b is a True>>> b == aTrue>>> b = a[:]>>> b is aFalse>>> b == aTrue

更多运算符的运用 查看

/python/python-operators.html

列表

类似于shell中的数组,取下标就可以了。

[root@localhost python]# cat name.py #!/usr/bin/env python3names = [ "aaa", "bbb" , "ccc"]print (names[0])print (names[1])

[root@localhost python]# ./name.py aaabbb

取最后一位可以是 -1,倒数第二位就是-2

[root@localhost python]# cat name.py #!/usr/bin/env python3names = [ "aaa", "bbb" , "ccc", "ddd"]print (names[-1])[root@localhost python]# ./name.py ddd

len 打印列表长度,可以

[root@localhost python]# cat ./name.py #!/usr/bin/env python3names = [ "aaa", "bbb" , "fadfa","ccc", "ddd", "@!dfa","ASfd"]print (len(names))

[root@localhost python]# ./name.py 7

enumerate

可以直接打印出 列表的下标和内容 。在循环列表取值的时候,可以用到。

[root@localhost python]# cat name.py #!/usr/bin/env python3names = [ "aaa", "bbb" , "fadfa","ccc", "ddd", "@!dfa","ASfd"]for i in enumerate(names):print (i)for i,j in enumerate(names):print (i,j)[root@localhost python]# ./name.py (0, 'aaa')(1, 'bbb')(2, 'fadfa')(3, 'ccc')(4, 'ddd')(5, '@!dfa')(6, 'ASfd')0 aaa1 bbb2 fadfa3 ccc4 ddd5 @!dfa6 ASfd

切片

取出几个连续的串,顾头不顾尾,

[root@localhost python]# cat name.py #!/usr/bin/env python3names = [ "aaa", "bbb" , "ccc", "ddd"]print (names[0:3])

[root@localhost python]# ./name.py ['aaa', 'bbb', 'ccc']

反向取

[root@localhost python]# cat name.py #!/usr/bin/env python3names = [ "aaa", "bbb" , "ccc", "ddd"]print (names[-3:-1])

[root@localhost python]# ./name.py ['bbb', 'ccc']

如果要取到最后一位,后一位直接不写,就行了。 同理从第一位开始取,首位也可以省略写。

[root@localhost python]# cat name.py #!/usr/bin/env python3names = [ "aaa", "bbb" , "ccc", "ddd"]print (names[0:])

print (names[:3])

[root@localhost python]# ./name.py ['aaa', 'bbb', 'ccc', 'ddd']

['aaa', 'bbb', 'ccc']

根据内容查找下标,使用 .index

[root@localhost python]# cat name.py #!/usr/bin/env python3names = [ "aaa", "bbb" , "ccc", "ddd"]print (names.index("aaa"))

[root@localhost python]# ./name.py 0

步长切片,就是不是连续打印

[root@master python]# cat name2.py #!/usr/bin/env python3names = ["aaa","bbb","ccc","ddd"]print (names[0:-1:2]) #这样就是相隔打印一下[root@master python]# ./name2.py ['aaa', 'ccc']

追加

append

[root@localhost python]# cat name.py #!/usr/bin/env python3names = [ "aaa", "bbb" , "ccc", "ddd"]names.append ("eee") #直接写入内容就行了print (names)

[root@localhost python]# ./name.py ['aaa', 'bbb', 'ccc', 'ddd', 'eee']

插入到指定位置

insert

[root@localhost python]# cat name.py #!/usr/bin/env python3names = [ "aaa", "bbb" , "ccc", "ddd"]names.append ("eee")names.insert (1,"ababab")# 写入下标,其实就是插入的位置, 然后是插入的内容print (names)

[root@localhost python]# ./name.py ['aaa', 'ababab', 'bbb', 'ccc', 'ddd', 'eee']

修改

[root@localhost python]# cat name.py #!/usr/bin/env python3names = [ "aaa", "bbb" , "ccc", "ddd"]names[2] = "999999" #进行修改替换print (names)

[root@localhost python]# ./name.py ['aaa', 'bbb', '999999', 'ddd']

多重列表修改

就是有列表套列表的时候进行修改。方法其实和上面一样 就是,多写几个下标就行了。

[root@master python]# cat name.py #!/usr/bin/env python3names = ["aaa","bbb",["1111", "2222"], "ddd"]print (names)names[2][0] = ("5555")print (names)

[root@master python]# ./name.py ['aaa', 'bbb', ['1111', '2222'], 'ddd']['aaa', 'bbb', ['5555', '2222'], 'ddd']

删除

1. names.remove

[root@localhost python]# cat name.py #!/usr/bin/env python3names = [ "aaa", "bbb" , "ccc", "ddd"]names.remove("aaa")#输入内容print (names)

[root@localhost python]# ./name.py ['bbb', 'ccc', 'ddd']

2.del

[root@localhost python]# cat name.py #!/usr/bin/env python3names = [ "aaa", "bbb" , "ccc", "ddd"]del names[0]#输入下标print (names)

[root@localhost python]# ./name.py ['bbb', 'ccc', 'ddd']

也可以删除整个列表。

如上直接报错了。 因为没有 names这个变量了。

3.pop

效果和 del 类似。 就是如果不写下标的话,默认就是删除最后一位。

[root@localhost python]# cat name.py #!/usr/bin/env python3names = [ "aaa", "bbb" , "ccc", "ddd"]names.pop()

print (names)

names.pop(1)print (names)

[root@localhost python]# ./name.py ['aaa', 'bbb', 'ccc']['aaa', 'ccc']

计数

count

[root@localhost python]# cat name.py #!/usr/bin/env python3names = [ "aaa", "bbb" , "ccc", "ddd"]print (names.count("aaa")) #直接输入内容

[root@localhost python]# ./name.py 1

清空列表

clear

[root@localhost python]# cat name.py #!/usr/bin/env python3names = [ "aaa", "bbb" , "ccc", "ddd"]names.clear() print (names)

[root@localhost python]# ./name.py []

反转

就是整个列表的顺序都反过来了

[root@localhost python]# cat name.py #!/usr/bin/env python3names = [ "aaa", "bbb" , "ccc", "ddd"]names.reverse()print (names)

[root@localhost python]# ./name.py ['ddd', 'ccc', 'bbb', 'aaa']

排序

[root@localhost python]# cat name.py #!/usr/bin/env python3names = [ "aaa", "bbb" , "fadfa","ccc", "ddd", "@!dfa","ASfd"]names.sort()print (names)

[root@localhost python]# ./name.py ['@!dfa', 'ASfd', 'aaa', 'bbb', 'ccc', 'ddd', 'fadfa']

合并

就是 将2个列表合并到一个列表

[root@localhost python]# cat name.py #!/usr/bin/env python3names = [ "aaa", "bbb" , "fadfa","ccc", "ddd", "@!dfa","ASfd"]names2 = [1,2,3,5]print (names)names.extend(names2) #2个列表进行合并。同时被合并的列表也会保留print (names,names2)

[root@localhost python]# ./name.py ['aaa', 'bbb', 'fadfa', 'ccc', 'ddd', '@!dfa', 'ASfd']['aaa', 'bbb', 'fadfa', 'ccc', 'ddd', '@!dfa', 'ASfd', 1, 2, 3, 5] [1, 2, 3, 5]

copy 浅复制 也称呼为 浅copy

可以这样复制

[root@localhost python]# cat name.py #!/usr/bin/env python3names = [ "aaa", "bbb" , "fadfa","ccc", "ddd", "@!dfa","ASfd"]names2 = names[:]print (names2)

[root@localhost python]# ./name.py ['aaa', 'bbb', 'fadfa', 'ccc', 'ddd', '@!dfa', 'ASfd']

也可以直接复制列表

[root@master python]# cat name.py #!/usr/bin/env python3names = [ "aaa", "bbb", "ccc", "ddd"]names2 = names.copy()print (names)print (names2)[root@master python]# ./name.py ['aaa', 'bbb', 'ccc', 'ddd']['aaa', 'bbb', 'ccc', 'ddd']

但是修改了 原来的列表。 复制的那份并没有改。原理就和复制变量一样。 其实他是用的内存指针的方式进行copy的。 如下

[root@master python]# cat name.py #!/usr/bin/env python3names = [ "aaa", "bbb", "ccc", "ddd"]names2 = names.copy()print (names)print (names2)names[1] = ("bababa")print (names)print (names2)[root@master python]# ./name.py ['aaa', 'bbb', 'ccc', 'ddd']['aaa', 'bbb', 'ccc', 'ddd']['aaa', 'bababa', 'ccc', 'ddd']['aaa', 'bbb', 'ccc', 'ddd']

但是这个只是浅copy,当你是复制是多重列表的时候, 你修改了深层的列表的时候,那复制的那个列表。就会进行改变

[root@master python]# cat name.py #!/usr/bin/env python3names = ["aaa","bbb",["1111", "2222"], "ddd"]name2 = names.copy()print (names)names[1] = ("babab")names[2][0] = ("5555")print (names)print (name2)

[root@master python]# ./name.py ['aaa', 'bbb', ['1111', '2222'], 'ddd']['aaa', 'babab', ['5555', '2222'], 'ddd']['aaa', 'bbb', ['5555', '2222'], 'ddd']

浅copy的用处

可以创建联合账号,就像是夫妻拥有共同的账户,然后当一方消费之后,2个人账户余额都会发生变化。

[root@localhost python]# cat name2.py #!/usr/bin/env python3person = [ "name",["saving","100"] ]p1 = person.copy()p2 = person.copy()p1[0] = "husband"p2[0] = "wife"p1[1][1] = 50print (p1)print (p2)[root@localhost python]# ./name2.py ['husband', ['saving', 50]]['wife', ['saving', 50]]

深copy

完全复制,就是当原来的列表,无论怎么改的情况下。复制的那份列表也不会改变。

需要使用import copy 模块

[root@master python]# cat name.py #!/usr/bin/env python3import copynames = ["aaa","bbb",["1111", "2222"], "ddd"]name2 = copy.deepcopy(names)#注意这边一定是使用deepcopy。 否则还是浅copyprint (names)names[1] = ("babab")names[2][0] = ("5555")print (names)print (name2)

[root@master python]# ./name.py ['aaa', 'bbb', ['1111', '2222'], 'ddd']['aaa', 'babab', ['5555', '2222'], 'ddd']['aaa', 'bbb', ['1111', '2222'], 'ddd']

如上,可以看到,无论原始的列表 改了第一层还是更深的层次。 copy的names2 都不会变化 。

列表循坏

和shell类似

[root@master python]# cat name2.py #!/usr/bin/env python3names = ["aaa","bbb",["1111", "2222"], "ddd"]for i in names:print (i)[root@master python]# ./name2.py aaabbb['1111', '2222']ddd

元组

作用类似于列表,但是只能只读。不能修改。所以也叫只读列表

基础语法,和列表类似

[root@localhost python]# cat tuple.py #!/usr/bin/env python3names = ( "aaa" , "bbbb")print ( names[1] )[root@loca

而且它只有 count和index参数可以使用

[root@localhost python]# cat tuple.py #!/usr/bin/env python3names = ( "aaa" , "bbbb")print ( names.count("aaa") )print ( names.index("aaa") )

[root@localhost python]# ./tuple.py 10

字符串的常用操作

capitalize 首字母大写

[root@master day2]# cat strings.pt #!/usr/bin/env python3name = ("haha")print (name.capitalize())[root@master day2]# ./strings.pt Haha

count 统计 字符串中 某一个字符的数字。

[root@master day2]# cat strings.py #!/usr/bin/env python3name = ("haha")print (name.count("a"))[root@master day2]# ./strings.py 2

center 居中打印。同时 可以规定字符串的长度

[root@master day2]# cat strings.py #!/usr/bin/env python3name = ("haha")print (name.center(50,"-"))# 这边的意思是打印50个字符串, 如果变量中的字符串不够,则用"-"代替。[root@master day2]# ./strings.py -----------------------haha-----------------------

endswith 判断一段字符串以什么结尾

[root@master day2]# cat strings.py #!/usr/bin/env python3name = ("haha")print (name.endswith("a"))print (name.endswith("b"))[root@master day2]# ./strings.py TrueFalse

expandtabs 定义一些格式字符的长度(如tab健)

[root@master day2]# cat strings.py #!/usr/bin/env python3name = ("ha \tha")print (name.expandtabs(tabsize=30))# 这里是定义了tab 健的长度[root@master day2]# ./strings.py ha ha

find 找到这个字符的下标,这个找到的从左边数,第一个找的的字符的下标

[root@master day2]# cat strings.py #!/usr/bin/env python3name = ("abcde")print (name.find("a"))[root@master day2]# ./strings.py 0

rfind 这个找到的从右边数,第一个找的字符的下标(字符对应的下标不变)

[root@master day2]# cat strings.py #!/usr/bin/env python3name = ("abcdea")print (name.find("a"))print (name.rfind("a"))[root@master day2]# ./strings.py 05 #字符对应的下标不变, 只是找寻的方式变了

isalnum 判断字符串里面是否只有数字和字母

[root@master day2]# cat strings.py #!/usr/bin/env python3name = ("abcde")name1 = ("abc123")name2 = ("dadaf123!@")print (name.isalnum())print (name1.isalnum())print (name2.isalnum())[root@master day2]# ./strings.py TrueTrueFalse

isalpha 是都是纯英文(包括大小写)

[root@master day2]# cat strings.py #!/usr/bin/env python3name = ("abcde")name1 = ("abc123")print (name.isalpha())print (name1.isalpha())[root@master day2]# ./strings.py TrueFalse

isidentifier 判断是否是一个合法的变量名

[root@master day2]# cat strings.py #!/usr/bin/env python3name = ("abcde")name1 = ("abc123")name2 = ("dadaf123!@")print ("dada".isidentifier())print ("1dada".isidentifier())# 之前有说过。数字是不行作为变量名开头的[root@master day2]# ./strings.py TrueFalse

print (name.islower()) 判断是不是小写

print (name.upper())判断是不是大写

print (name.isspace()) 判断是不是空格

istitle 判断是不是首字母大写

[root@master day2]# cat strings.py #!/usr/bin/env python3name = ("My name is")name1 = ("My Name Is")print (name.istitle())print (name1.istitle())[root@master day2]# ./strings.py FalseTrue

join 将列表变成字符串。同时定义分隔符

[root@master day2]# cat strings.py #!/usr/bin/env python3print (''.join(['1','2','3']))print ('+'.join(['1','2','3']))# 可以定义分隔符,可以不写。[root@master day2]# ./strings.py 1231+2+3

ljust,rjust 都是定义字符串的长度,然后可以定义不够部分补齐的字符。

[root@master day2]# cat strings.py #!/usr/bin/env python3name = ("My name is")print (name.ljust(50,"*"))print (name.rjust(50,"-"))[root@master day2]# ./strings.py My name is****************************************----------------------------------------My name is

lower 将字符串变小写

upper 将字符串变大写

[root@master day2]# cat strings.py #!/usr/bin/env python3name = ("My name is")print (name.lower())print (name.upper())[root@master day2]# ./strings.py my name isMY NAME IS

strip 可以去掉字符串2边的空格和回车

lstrip 可以去掉字符串左边的空格和回车

lstrip 可以去掉字符右边的空格和回车

[root@master day2]# cat strings.py #!/usr/bin/env python3name = ("My name is")print (name)print ("\nname")print ("name\n")print ("\n name ")print ("--")[root@master day2]# ./strings.py My name isnamenamename --

[root@master day2]# cat strings2.py #!/usr/bin/env python3name = ("My name is")print (name)print ("\nname".lstrip()) #去掉左边的空格和回车print ("name\n".rstrip()) #去掉右边的空格和回车print ("\n name ".strip()) #去掉两边空格和回车print ("--")

[root@master day2]# ./strings2.py My name isnamenamename--

maketrans 自定义字符串转换。 类似于字符串的加密。

看以下。打印的出来的是转义后的东西。

[root@master day2]# cat strings.py #!/usr/bin/env python3p = str.maketrans("abcdefghijklmn","1234567#@89&*)")# 这边前面的字符数量和后面转移码的数量必须一致。否则会报错print ("my name is haha".translate(p))[root@master day2]# ./strings.py *y )1*5 @s #1#1

replace 字符替换

[root@master day2]# cat strings.py #!/usr/bin/env python3name = ("my name is")print (name.replace("m","M"))[root@master day2]# ./strings.py My naMe is

默认是全部替换,也可以定义替换的数量

[root@master day2]# cat strings.py #!/usr/bin/env python3name = ("my name is")print (name.replace("m","M",1))[root@master day2]# ./strings.py My name is

split 将字符串变成列表,并指定分隔符(默认是空格是分隔符)

[root@master day2]# cat strings.py #!/usr/bin/env python3name = ("my name is ")print (name.split())[root@master day2]# ./strings.py ['my', 'name', 'is']

指定分隔符

[root@master day2]# cat strings.py #!/usr/bin/env python3name = ("my name is ")print (name.split("m")) #可以使用m为分隔符,同时m被视为分隔符,不被打印[root@master day2]# ./strings.py ['', 'y na', 'e is ']

swapcase 大小写互换

[root@master day2]# cat strings.py #!/usr/bin/env python3print ("NAme Is".swapcase())[root@master day2]# ./strings.py naME iS

print (name.title()) 变成 tile,首字母大写。

字典

字典 是一种key-value的数据类型

[root@mfsclient python]# cat dictionary.py #!/usr/bin/env pythoninfo = {"stau001":"wutenglan","stau002":"Julia","stau003":"zuotenyaoxi","stau004":"longzeluola","stau005":"jizemingbu"}print (info)print (info["stau002"])[root@mfsclient python]# ./dictionary.py {'stau002': 'Julia', 'stau003': 'zuotenyaoxi', 'stau001': 'wutenglan', 'stau004': 'longzeluola', 'stau005': 'jizemingbu'}Julia

以上只能用于确定key的情况下,。如果不确定key,需要使用info.get,就是没有这个key。程序也不会报错。

[root@mfsclient python]# cat dictionary.py #!/usr/bin/env pythoninfo = {"stau001":"wutenglan","stau002":"Julia","stau003":"zuotenyaoxi","stau004":"longzeluola","stau005":"jizemingbu"}print (info)print (info.get("st10"))print (info.get("stau001"))[root@mfsclient python]# ./dictionary.py {'stau002': 'Julia', 'stau003': 'zuotenyaoxi', 'stau001': 'wutenglan', 'stau004': 'longzeluola', 'stau005': 'jizemingbu'}Nonewutenglan

判断key是否存在

[root@master day2]# cat dictionary.py #!/usr/bin/env python3info = {"stau001":"wutenglan","stau002":"Julia","stau003":"zuotenyaoxi","stau004":"longzeluola","stau005":"jizemingbu"}print ("stau001" in info )print ("stau006" in info )[root@master day2]# ./dictionary.py TrueFalse

只打印value或者只打印key

[root@master day2]# cat dictionary.py #!/usr/bin/env python3info = {"stau001":"wutenglan","stau002":"Julia","stau003":"zuotenyaoxi","stau004":"longzeluola","stau005":"jizemingbu"}print (info.values())print (info.keys())[root@master day2]# ./dictionary.py dict_values(['wutenglan', 'Julia', 'zuotenyaoxi', 'longzeluola', 'jizemingbu'])dict_keys(['stau001', 'stau002', 'stau003', 'stau004', 'stau005'])

就是给他进行赋值

root@mfsclient python]# cat dictionary.py #!/usr/bin/env pythoninfo = {"stau001":"wutenglan","stau002":"Julia","stau003":"zuotenyaoxi","stau004":"longzeluola","stau005":"jizemingbu"}print (info)info["stau001"] = "cangjinkong"print (info)[root@mfsclient python]# ./dictionary.py {'stau002': 'Julia', 'stau003': 'zuotenyaoxi', 'stau001': 'wutenglan', 'stau004': 'longzeluola', 'stau005': 'jizemingbu'}{'stau002': 'Julia', 'stau003': 'zuotenyaoxi', 'stau001': 'cangjinkong', 'stau004': 'longzeluola', 'stau005': 'jizemingbu'}[root@mfsclient python]#

其实方法和改的方法一样,就是加一个key, 赋值原有的key就是改。 赋值给没有的key就是加一个值。

[root@mfsclient python]# cat dictionary.py #!/usr/bin/env pythoninfo = {"stau001":"wutenglan","stau002":"Julia","stau003":"zuotenyaoxi","stau004":"longzeluola","stau005":"jizemingbu"}print (info)info["stau006"] = "Maria"print (info)[root@mfsclient python]# ./dictionary.py {'stau002': 'Julia', 'stau003': 'zuotenyaoxi', 'stau001': 'wutenglan', 'stau004': 'longzeluola', 'stau005': 'jizemingbu'}{'stau002': 'Julia', 'stau003': 'zuotenyaoxi', 'stau001': 'wutenglan', 'stau006': 'Maria', 'stau004': 'longzeluola', 'stau005': 'jizemingbu'}

删除

可以使用del

[root@mfsclient python]# cat dictionary.py #!/usr/bin/env pythoninfo = {"stau001":"wutenglan","stau002":"Julia","stau003":"zuotenyaoxi","stau004":"longzeluola","stau005":"jizemingbu"}print (info)del info["stau001"]print (info)[root@mfsclient python]# ./dictionary.py {'stau002': 'Julia', 'stau003': 'zuotenyaoxi', 'stau001': 'wutenglan', 'stau004': 'longzeluola', 'stau005': 'jizemingbu'}{'stau002': 'Julia', 'stau003': 'zuotenyaoxi', 'stau004': 'longzeluola', 'stau005': 'jizemingbu'}

如果要只能key的话。可以只用pop

[root@mfsclient python]# cat dictionary.py #!/usr/bin/env pythoninfo = {"stau001":"wutenglan","stau002":"Julia","stau003":"zuotenyaoxi","stau004":"longzeluola","stau005":"jizemingbu"}print (info)info.pop("stau001")print (info)[root@mfsclient python]# ./dictionary.py {'stau002': 'Julia', 'stau003': 'zuotenyaoxi', 'stau001': 'wutenglan', 'stau004': 'longzeluola', 'stau005': 'jizemingbu'}{'stau002': 'Julia', 'stau003': 'zuotenyaoxi', 'stau004': 'longzeluola', 'stau005': 'jizemingbu'}

popitem随机删除一组,可以不指定key

[root@mfsclient python]# cat dictionary.py #!/usr/bin/env pythoninfo = {"stau001":"wutenglan","stau002":"Julia","stau003":"zuotenyaoxi","stau004":"longzeluola","stau005":"jizemingbu"}print (info)info.popitem()print (info)[root@mfsclient python]# ./dictionary.py {'stau002': 'Julia', 'stau003': 'zuotenyaoxi', 'stau001': 'wutenglan', 'stau004': 'longzeluola', 'stau005': 'jizemingbu'}{'stau003': 'zuotenyaoxi', 'stau001': 'wutenglan', 'stau004': 'longzeluola', 'stau005': 'jizemingbu'}

多级字典的嵌套和方法

多级字典

av_catalog = {"Europe":{"": ["很多免费的,世界最大的","质量一般"],"": ["很多免费的,也很大","质量比yourporn高点"],"": ["多是自拍,高质量图片很多","资源不多,更新慢"],"x-":["质量很高,真的很高","全部收费,屌比请绕过"]},"Asis":{"tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]},"mainland":{"1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]}}print (av_catalog)

多级的 改

[root@master day2]# cat Dic.py #!/usr/bin/env python3av_catalog = {"Europe":{"": ["很多免费的,世界最大的","质量一般"],"": ["很多免费的,也很大","质量比yourporn高点"],"": ["多是自拍,高质量图片很多","资源不多,更新慢"],"x-":["质量很高,真的很高","全部收费,屌比请绕过"]},"Asis":{"tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]},"mainland":{"1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]}}print (av_catalog)av_catalog ["mainland"]["1024"][1] = ("aaaaa")print (av_catalog)

执行结果

其他操作

setdefault

可以进行增加元素。同时可以判断key是否存在,如果存在。则该元素不增加。如果存在,增加该元素。

av_catalog = {"Europe":{"": ["很多免费的,世界最大的","质量一般"],"": ["很多免费的,也很大","质量比yourporn高点"],"": ["多是自拍,高质量图片很多","资源不多,更新慢"],"x-":["质量很高,真的很高","全部收费,屌比请绕过"]},"Asis":{"tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]},"mainland":{"1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]}}av_catalog.setdefault("HongKong",{"":["papapa","momo"]})print (av_catalog)

注意看这个的setdefault 的写法,于上面不通。中间是, 不是:

如果key不存在,则进行添加,如果key存在,则不生效。

update

可以将2个字典合并。如实有相同的key,则用新的字典中的key进行替换。

[root@master day2]# cat dictionary.py #!/usr/bin/env python3info = {"stau001":"wutenglan","stau002":"Julia","stau003":"zuotenyaoxi","stau004":"longzeluola","stau005":"jizemingbu"}info2 = {"stau001":"aaaa",1:3,2:4}info.update(info2)print (info)[root@master day2]# ./dictionary.py {'stau001': 'aaaa', 'stau002': 'Julia', 'stau003': 'zuotenyaoxi', 'stau004': 'longzeluola', 'stau005': 'jizemingbu', 1: 3, 2: 4}

item

将字典转换整列表。而列表里面 key和value的形式以元组进行排列的 。

[root@master day2]# cat dictionary.py #!/usr/bin/env python3info = {"stau001":"wutenglan","stau002":"Julia","stau003":"zuotenyaoxi","stau004":"longzeluola","stau005":"jizemingbu"}print (info.items())[root@master day2]# ./dictionary.py dict_items([('stau001', 'wutenglan'), ('stau002', 'Julia'), ('stau003', 'zuotenyaoxi'), ('stau004', 'longzeluola'), ('stau005', 'jizemingbu')])

fromkeys

给一个变量赋值字典,并且初始化这个字段。同时这个字典所有的值都是相同的

[root@master day2]# cat dictionary.py #!/usr/bin/env python3C = dict.fromkeys([6,7,8],("hahah"))# 其实这里的dict就是字典的意思,新创建的字典就是C这个变量print (C)[root@master day2]# ./dictionary.py {6: 'hahah', 7: 'hahah', 8: 'hahah'}

字典的循环

就是个for循环。只不过他默认是指打印key的。所以需要这么写

[root@master day2]# cat dictionary.py #!/usr/bin/env python3info = {"stau001":"wutenglan","stau002":"Julia","stau003":"zuotenyaoxi","stau004":"longzeluola","stau005":"jizemingbu"}for i in info:print (i,info[i])[root@master day2]# ./dictionary.py stau001 wutenglanstau002 Juliastau003 zuotenyaoxistau004 longzeluolastau005 jizemingbu

另一种循环

使用info.items,但是这个循环需要有个将字典转换成列表的过程。如果数据量大的情况下。 非常影响性能。所以推荐上面这种。数据量不大的情况下。是一样的。

[root@master day2]# cat dictionary.py #!/usr/bin/env python3info = {"stau001":"wutenglan","stau002":"Julia","stau003":"zuotenyaoxi","stau004":"longzeluola","stau005":"jizemingbu"}for i,j in info.items():print (i,j)[root@master day2]# ./dictionary.py stau001 wutenglanstau002 Juliastau003 zuotenyaoxistau004 longzeluolastau005 jizemingbu

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。