python学习第二天

一.模块的认识

1模块的分类

模块即库分为标准库和第三方库,标准库就是python自带的可以直接导入使用的库,第三方库就是需要下载安装后才能导入使用的库(我们自己写的python文件就可以作为第三方库导入使用)。要在自己的一个python文件中导入另个python文件作为第三方库来使用,需要将这两个文件放在相同路径下,或者将被导入的那个文件放在python的环境变量中指定的路径里,或者将被导入文件的路径添加到python的环境变量中

2模块初识

模块sys、os

sys.path输出python的环境变量

sys.argv输出当前python文件的相对路径,在执行python文件时,在其后跟上参数即可将参数传入argv中

sys.argv[2]提取值,[]中为值得位置,从0开始计算

os.system("pwd") 可以执行系统命令,不保存结果

os.popen("pwd")执行系统命令,结果保存在内存中

os.popen("pwd").read() 执行系统命令,并读取结果

os.mkdir("new_dir")在当前目录下新建目录new_dir

 

二.pyc文件

python在第一次执行时会编译生出pycodeobject存在内存中,当程序结束运行时将pycodeobject的内容写入.pyc结尾的同名文件中。再以后执行时,python会检查源代码和.pyc文件的更新时间,如果源代码更新时间更晚,则再次编译生成pycodeobject,否则直接载入.pyc文件。

 

三.数据类型

python3.x中数据类型有整型、浮点型、字符型、布尔值、bytes、列表、元祖、字典,其中在python2.X中字符类型和bytes类型是相同的,而在python3.X中被细分出来。python3.X中字符类型转换为bytes类型使用"字符串".encode(encoding="utf-8"),bytes类型转换为字符类型使用"b'\xe7\x8e\xaf\xe5\xa2\x83\xe5\x8f\x98\xe9\x87\x8f'".decode(encoding="utf-8")

 

四.数据运算

1算数运算

+、-、*、/、%、**、//,依次为加、减、乘、除、取余、幂运算、取整

2比较运算

==、!=、>、<、>=、<=,依次为等于、不等于、大于、小于、大于等于、小于等于

3赋值运算

=、+=、-=、*=、/=、%=、**=、//=,第一个为简单赋值,+=的运用如下:a+=b等效于a=a+b,其余如-=、*=等的运用类似于+=

4逻辑运算

and、or、not,and代表所有条件成立才为真、or代表有一个条件成立就为真、not代表非可以理解为取反

5成员运算

in、not in,in代表寻找的值在指定序列中、not in代表寻找的值不在指定序列中

6身份运算

is、is not,is用于判断两个标识符是否引用同一个对象、is not用于判断两个标识符是否引用不同对象

a = "id"

type(a) is str

7三元运算

a,b,c = 1,2,3

d = a if a > b else c

上面的代码等价于:

a = 1

b =2

c =3

if a > b:

   d = a

else:

   d = c

五.列表

列表是一种有序的可变的数据类型

1列表方法

追加元素

name.append("alex")

插入元素

name.insert(1,"alex") 1代表要插入的位置

删除元素

name.remove("alex")

del name[2]

name.pop(2) 不指定删除哪个元素时默认删除最后一个元素

修改元素

name[2] = "alex"

扩展列表

name2 = [1,2,3]

name.extend(name2) 将列表name2中的元素合并到列表name中

统计元素个数

name.count("alex")

反转&排序

name.reverse() 将列表中元素顺序反转

name.sort() 将元素按ASCII码对第一个字符进行排序

获取下标

name.index("alex")

for index,i in enumerate(names):  enumerate()可以方便的将元素下标和元素一一对应
     print(index,i)

2切片

name = ["lf","wy","fm","fwl","gyt"]

print(name[0:3:2])

切片中两个冒号中间的三个数分别表示起始下标:结束下标:步长即取值间隔,其中取值时结束下标代表的值不会被取出。正数代表显示时从前向后,负数代表显示时从后向前,而python取值时总是从左向右依次取值,并且从开头开始取值时起始下标可以省略或者取值到结尾时结束下标可以省略

3浅拷贝与深拷贝

浅拷贝只拷贝列表本身,而其中的元素则是被拷贝对象中元素的引用,深拷贝则拷贝列表本身并将被拷贝对象中的元素拷贝到新的内存地址上

浅拷贝方法

name2 =copy.copy(name)

name2 = name[:]

name2 = list(name)

name2 = name.copy()

深拷贝方法

name2 = copy.deepcopy(name)

 

六.元组

元组是有序不可修改的数据类型

统计元素个数

tuple = (1,2,3)

tuple.count(1)

获取下标

tuple.index(1)

 

七.字符串操作

name.capitalize()  首字母大写
name.casefold()   大写全部变小写
name.center(50,"-")  输出 '---------------------Alex Li----------------------'
name.count('lex') 统计 lex出现次数
name.encode()  将字符串编码成bytes格式
name.endswith("Li")  判断字符串是否以 Li结尾
 "Alex\tLi".expandtabs(10) 输出'Alex      Li', 将\t转换成多长的空格 
 name.find('A')  查找A,找到返回其索引, 找不到返回-1 

format :
    >>> msg = "my name is {}, and age is {}"
    >>> msg.format("alex",22)
    'my name is alex, and age is 22'
    >>> msg = "my name is {1}, and age is {0}"
    >>> msg.format("alex",22)
    'my name is 22, and age is alex'
    >>> msg = "my name is {name}, and age is {age}"
    >>> msg.format(age=22,name="ale")
    'my name is ale, and age is 22'
format_map
    >>> msg.format_map({'name':'alex','age':22})
    'my name is alex, and age is 22'


msg.index('a')  返回a所在字符串的索引
'9aA'.isalnum()   True

'9'.isdigit() 字符串是否只包含数字
name.isnumeric  
name.isprintable
name.isspace
name.istitle
name.isupper
 "|".join(['alex','jack','rain'])
'alex|jack|rain'


maketrans
    >>> intab = "aeiou"  #This is the string having actual characters. 
    >>> outtab = "12345" #This is the string having corresponding mapping character
    >>> trantab = str.maketrans(intab, outtab)
    >>> 
    >>> str = "this is string example....wow!!!"
    >>> str.translate(trantab)
    'th3s 3s str3ng 2x1mpl2....w4w!!!'

 msg.partition('is')   输出 ('my name ', 'is', ' {name}, and age is {age}') 

 >>> "alex li, chinese name is lijie".replace("li","LI",1)
     'alex LI, chinese name is lijie'

 msg.swapcase 大小写互换


 >>> msg.zfill(40)
'00000my name is {name}, and age is {age}'



>>> n4.ljust(40,"-")
'Hello 2orld-----------------------------'
>>> n4.rjust(40,"-")
'-----------------------------Hello 2orld'


>>> b="ddefdsdff_哈哈" 
>>> b.isidentifier() #检测一段字符串可否被当作标志符,即是否符合变量命名规则
True

八.字典

字典是一种key-value的键值对无序数据类型,key必须唯一

info = {"stu1101":"lf","stu1102":"gyt","stu1103":"fm"}

增加元素

info["stu1104"] = "wy"

修改元素

info["stu1101"] = "alex"

删除元素

info.pop("stu1101")

del info["stu1101"]

获取元素

info.get("stu1101") 建议用法

"stu1101" in info

info["stu1101"] 不存在会报错,get方法不会,没有只会显示None

嵌套使用

info = {"浙江省":"{"杭州市":"西湖区"}","江苏省":"{"南京市":"江宁区"}"}

获取value值

info.values() 只输出value值

获取key值

info,keys() 只输出key值

设置初始字典值

info.setdefault("stu1106":"df") 当stu1106不存在时将这个值插入字典中,当stu1106已存在时不做任何改动

b = {1:2,3:4,"stu1101":"sa"}

info.update(b) 将字典b中的元素更新到info中,info中不存在的元素就插入,存在的则更新为b中的元素

将字典转换为列表

info.items()

循环输出字典值

for key in info

     print(key)

 

posted @ 2017-03-19 19:53  魅力宁波  阅读(177)  评论(0)    收藏  举报