python 学习第二天
由于换了博客,第一篇没有在博客园写,写在了开源中国上,链接地址为http://my.oschina.net/u/254063/blog/719289,大家有兴趣可以看看
一, python 数据类型
1,数字
这就不具体解释了,数字中包含整数(int),浮点数(float),复数(complex)这三大类型
2,字符串
字符串就是这样,"hello world"
3,布尔型
和其它语言一样,布尔型就两个值,0和1,及表示true和false,布尔型一般应用在判断语句中
二,python 运算符
比较运算:
赋值运算:
逻辑运算:
成员运算:
身份运算:
位运算:
2,运算符优先级
三,python模块初识:
1,python的模块是指事先写好的一些代码做封装,然后再通过import 语句导入到python 脚本中,加以应用,从而避免了代码重复,另外也提高了开发效率。
python 导入模块示例
1 import os 2 print(os.getcwd())
2,os模块总结
(1),os.name()输出字符串指示正在使用的平台。如果是window 则用'nt'表示,对于Linux/Unix用户,它是'posix'。
(2),os.getcwd() 函数得到当前工作目录,即当前Python脚本工作的目录路径。
(3),os.listdir() 返回指定目录下的所有文件和目录名。
(4),os.remove() 删除一个文件。
(5),os.system() 运行shell命令。
(6),os.path.split() 函数返回一个路径的目录名和文件名。
3,system模块总结
(1),sys.path 查找模块所在目录的目录名列表。
(2),sys.argv 命令行的参数,包括脚本名称。
四,字符编码转换
下面一张图很好的解释了python中的字符编码转换,即从string 转换到二进制用encode,从二进制转换到string用decode,其实也可以理解为编码和解码,不过需要注意的是,在编码时要告诉编码函数自己现在的字符编码,解码时需要告诉自己要解到哪种字符编码
name="ll1234file中" a=name.encode('utf-8')
name=a.decode('utf-8') print(a)
五,python列表
1,列表是Python中最基本的数据结构。列表中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。列表是可变的,即可以修改列表的内容
[a,b,c,d] 像这样的形式就是一个列表,其中a字符的位置或者说a字符的索引为0
2,列表的基本操作,
(1)读取列表的长度len()
x=["name","back","file","head"] a=len(x) print(a)
(2)读取列表的值,修改列表的值
x=["name","back","file","head"] a=x[0] print(a) x[1]="find" print(x)
(3)在列表中插入值,删除列表中的某个值
append方法是在列表的末尾插入字符,insert可指定位置插入,pop不加任何参数的时候默认删除最后一个值,有参数时,删除指定位置的值,其实append(),pop()是两个相反的操作,类似于如栈和出栈
x=["name","back","file","head"] x.append("find") x.insert(1,"happy") x.remove("back") print(x)x.pop()
print(x)
x.pop(1)
print(x)
(4)将两个列表合并
1 x=["name","back","file","head"] 2 y=["1","2","3"] 3 x.extend(y) 4 print(x)
(5)统计列表中某个元素的数量,获取列表中某个元素的下标
1 x=["name","back","file","head","name","name"] 2 print(x.count("name"))
3 print(x.index("name"))
(6)循环读取列表中的值
1 x=["name","back","file","head","name","name"] 2 for i in range(len(x)): 3 print(x[i]
(7)列表的copy
x=["name","back","file","head","name","name"] y=x.copy() print(y)
(8)深拷贝和浅拷贝
在python语言中,copy有两种方法,一种如上面代码,这属于浅拷贝,下面的例子就能看出浅拷贝的问题,我们可以看到当x列表中的["1","2"]元素,单独改变某个值得时候,y列表中对应的元素值也做了相应的修改,像这样的copy我们称之为浅拷贝
1 x=["name","back","file",["1","2"],"name","name"] 2 y=x.copy() 3 x[3][0]="2" 4 print(x) 5 print(y)
再来看看深拷贝,从结果中我们可以看出单独改变x中["1","2"]的某个元素的时候,y列表是不受任何影响的,这样的拷贝我们称之为深拷贝
import copy x=["name","back","file",["1","2"],"name","name"] y=copy.deepcopy(x) x[3][0]="2" print(x) print(y)
六,元组
1,元组是python中的另一种数据结构,元组是以()括起来的,元组的位置或者说是索引和列表的一样,都是从0开始的,元组和列表最大的不同在于,元组是不可变的,是不能被修改的 2,元组的基本操作
(1)统计元组中某个元素的数量
1 x=("name","back","file","head","name","name") 2 print(x.count("name"))
(2)求某个元素的索引,如果有重复元素,index的值取第一个元素的索引值
1 x=("name","back","file","head","name","name") 2 print(x.index("name"))
七,切片
先从原理上分析切片运算:list的切片,内部是调用__getitem__,__setitem__,__delitem__和slice函数。而slice函数又是和range()函数相关的。下面的一些列子展示了切片对列表或者元组的操作,x[2:4]表示从x列表的索引为2的元素读取,到索引为4的元素之前的范围,也就是索引为2,3的两个元素,并不包括索引为4的元素,y[::2]表示整个列表,已2为单位作为步长输出,也就是每隔1个位置输出该元素
x=('1','2','3','4','5','6'), y=['1','2','3','4','5','6'] print(x[2:4]) print(y[::2])
切片中的范围也可以为负数,表示从列表或者元组的后面算起,输出相应位置的元素
y=['1','2','3','4','5','6']
print(x[-3:-1])
print(y[-5:-1:2])
八,字典
字典是python中的另外一种数据结构,它的形式是以{}封闭,里面包括key,value键值对,如{"name":"jack"},它的特性是无序的,而且key是唯一的,不可变的,例如{["name","number"]:"jack"} 像这样的形式就会报错,因为key为一个列表,列表是可变的
对于字典的操作方法,有如下,
(1) x.items()读取x字典中的所有值,x.keys()读取x字典中的所有key,x,get("name")获取字典中name这个key所对应的值,x["salary"]="800",再x字典中插入新的key,value,因为字典是无序的,像这种写法,最终打印出来x salary所对应的键值对,并不一定在最后一个位置
1 x={"name":"jack","number":"1234","address":"beijing"} 2 print(x.items()) 3 print(x.keys()) 4 print(x.get("name")) 5 x["salary"]="800" 6 print(x)
(2) 删除字典中的某个键值,清空整个字典
1 x={"name":"jack","number":"1234","address":"beijing"} 2 x.pop("name") 3 print(x) 4 x.clear() 5 print(x)
(3)修改字典中有个键值对的值,设置键值对的默认值x["name"]="alex",将字典中"name"原有的值jack修改为了alex。setdefault()方法为字典设置默认值
如果字典中本身包含这个键值对,那么setdefault()方法不会修改原来的键值对,如果字典中没有这个键值对,那么将会以新的键值对写入字典中。
1 x={"name":"jack","number":"1234","address":"beijing"} 2 x["name"]="alex" 3 x.setdefault("name","chen") 4 print(x) 5 x.setdefault("salary","8000") 6 print(x)