首页 > 代码库 > python第二天

python第二天

day-2笔记:
1、is 比较的是id,==比较的是value(值)

2、变量值互换方法、中间变量
方法二:x,y=y,x
3、在比较or的级别中、如果or的左边是true、那么整个结果都是true。
4、数字类型有:int、float、复数:
重点强调复数:
x=1-2j
print(x.real)    #查看复数的实部
print(x.imag)     #查看复数的虚部

5、关于进制的换算:
bin()二进制:代表0b开头
oct()八进制:代表0o开头
hex()十六进制:代表0x开头

6、在python中有多个字符,但是只有一个值。
7、关于在python的input输入的时候又空格,不利于我们后期的取值比较:所以我们用以下方法进行设置:
a=input(’>>:’)
a.replace(‘ ‘, ‘‘)        #可以用replace(‘ ‘,‘‘)来去掉字符串里的所有空格;也可以用来替换字符串,第三个参数用来表示替换的次数:
>>> name = input(‘ussername:‘).replace(‘aa‘,‘‘)
>>> aa cc
name
‘ cc‘
#
a.strip()     #把输入的字符串的头部和尾部的空格去掉。
a.lstrip():#把左边的空格去掉
a.rstrip():#把右边的空格去掉
len()         #打印字符串的长度

8、python字符串的切割:split
Split的用法:首先要跟切割符、然后加切割的次数。
eg.:
user_info=‘root:0:0:0::/root:/bin/bash‘
print(user_info.split(‘:‘)[5])
/root
eg1:
user_info=‘root:0:0:0::/root:/bin/bash‘
print(user_info.split(‘:‘,1)[0])

9、查看字符串的长度使用len()方法。
split()切割字符串操作。
字符串的切片:顾头不顾尾。
name=‘hello word’
print(name[1:3])    #取从1到3
print(name[1:3:1])   #从1到3中间隔一个字符

10、判断字符串的特性:
endswith()    #以什么字符串为结尾,返回结果为布尔值
startswith()     #以什么字符串为开头,返回值为布尔
replace()        #替换字符串

11、fromat
 
print(‘{} {} {}‘.format(‘xm‘,‘11‘,‘male‘))
print(‘{0} {0} {1}‘.format(‘xm‘,‘11‘,‘male‘))
print(‘NAME:{name} AGE:{age} SEX:{sex}‘.format(name=‘xm‘,age=‘11‘,sex=‘male‘))


12、判断是否为数字:
num=‘123‘
print(num.isdigit())    #判读是否为数字,只能判断beyt类型和unicode类型。
num.isnumberic     #判断数字类型有中文数字、罗马数字、u类型。

13、find()   #查找字符串、如果存在返回真。
    count()    #统计次数
    lower()    #大小字母转小写
    upper()    #将小写字母转大写
    index()    #取出字符在字符串中的索引位置

14、用于存放多个不同的值。

二、列表的处理方式:
1、append()    #添加值到列表从左到右
2、pop()        #按照索引数字删除
3、remove()    #按照列表的值删除
4、len()        #统计列表元素的个数
5、in        #包含
6、clearI()    #清楚列表
7、copy()        #拷贝列表
8、count()    #统计元素的count
9、extend()    #添加多个元素到列表
10、index()    #查看元素的下标
11、reverse()    #反转
12、sort()    #对列表的元素进行排序
13、insert()    #指定位置插入

14、     队列:先进先出、
        堆栈:先进后出、

15、字符串占位:
msg=‘hello‘
a,b,c,_,e=msg
print(a,b)
h e
#
msg=‘hello‘
a,*_,b=msg
print(a,b)

16、模拟队列:
#队列、先进先出
fifo=[]
fifo.append(‘fist‘)
fifo.append(‘second‘)
fifo.append(‘third‘)
print(fifo)
print(fifo.pop(0))
print(fifo.pop(0))
print(fifo.pop(0))
print(‘@@@@@@@@@@@@@@@@@@@@@@‘)

#insert方法模拟队列:
fifo.insert(0,‘fist‘)
fifo.insert(0,‘second‘)
fifo.insert(0,‘third‘)
print(fifo)
print(fifo.pop())
print(fifo.pop())
print(fifo.pop())

#模拟堆栈
lifo=[]
fifo.append(‘fist‘)
fifo.append(‘second‘)
fifo.append(‘third‘)
print(fifo)
print(fifo.pop())
print(fifo.pop())
print(fifo.pop())
#insert方法模拟堆栈
fifo.insert(0,‘fist‘)
fifo.insert(0,‘second‘)
fifo.insert(0,‘third‘)
print(fifo)
print(fifo.pop(0))
print(fifo.pop(0))
print(fifo.pop(0))


17、元组不可变、主要用于读操作、是一个不可变的列表。
元组的元素是有序的,列表也是有序的。


18、字典是可变类型。但是字典的每个元素中的key是不可变的、value是可变的,比列表更加的占内存,字典的元素是无序的。


#默认值,当值不存在的时候返回默认值。
info={‘name‘:‘xm‘,‘age‘:‘18‘,‘sex‘:‘male‘}
requst=info.pop(‘asdfsadf‘,‘none‘)
print(requst)
none

requst=info.get(‘name1‘,‘none‘)
print(requst)
none

#显示key和value
print(info.keys())    #显示字典所有的key    #for循环遍历的时候默认遍历key
print(info.values())    #显示字典所有的value

info={‘name‘:‘xm‘,‘age‘:‘18‘,‘sex‘:‘male‘}
for n in info.items():    #items 取完整的字典
    print(n)

(‘name‘, ‘xm‘)
(‘age‘, ‘18‘)
(‘sex‘, ‘male‘)

for key,value in info.items():
    print(key,value)

name xm
age 18
sex male


info={‘name‘:‘xm‘,‘age‘:‘18‘,‘sex‘:‘male‘}
dic=info.fromkeys([‘name‘,‘ex‘,‘age‘,‘num‘],1111111)    #默认共享value
print(dic)
{‘name‘: 1111111, ‘ex‘: 1111111, ‘age‘: 1111111, ‘num‘: 1111111}

print(dict([(‘name‘,‘hehe‘),(‘age‘,‘11‘),(‘sex‘,‘male‘)]))    #生成字典



dic=dict.fromkeys([‘name‘,‘ex‘,‘age‘,‘num‘],111)    #生成字典,dict调用。还有一种方法是直接手动创建。
print(dic)


info={‘name‘:‘xm‘,‘age‘:‘18‘,‘sex‘:‘male‘}
print(info)
dic={‘a‘:1,‘b‘:2,‘name‘:‘hehe‘}
info.update(dic)
print(info)
# {‘name‘: ‘xm‘, ‘age‘: ‘18‘, ‘sex‘: ‘male‘}
# {‘name‘: ‘hehe‘, ‘age‘: ‘18‘, ‘sex‘: ‘male‘, ‘a‘: 1, ‘b‘: 2}



19、集合:
python=[‘alex‘,‘egon‘,‘yuanhao‘]
linux=[‘alex‘,‘egon‘]
a=[]

for p in python:
    if p in linux:
        a.append(p)
print(a)

集合:又不同的元素组成、集合是无序的,可以去重,集合的元素可以是数字、字符串。
集合内的元素必须是不可变的数据类型。集合内的元素必须是唯一。
使用set可以生成集合。集合不能取单个值。主要用于做关系运算。
集合的方法暂时不记录。

s1=set(‘heheh‘)
print(s1)
{‘h‘, ‘e‘}

交集是取两个集合中公共的部分、并集是取全部并取重。

s1 = {1,2,4,5}
s2 = {3,2,6,5}

#交集
print(s1 & s2)
#并集
print(s1 | s2)
#差集
print(s1 - s2)
print(s2 - s1)
#对称差集
print(s1 ^ s2)

#父集
print(s1 >= s2)
#子集
print(s2 <= s1)


小结:
按照存储值得个数:
    标量/原子类型:数字、字符串
    容器类型:列表、元组、字典

按照可变不可变区分:
    可变:列表、字典
    不可变:数字、字符串、元组

按照访问顺序区分:
    直接访问
    数字
    顺序访问(序列类型)    字符串,列表,元组
    key值访问(映射类型)    字典



20、字符编码:字符编码就是将编码从一种格式转化为另一种格式的一个标准。
将内存中的字符刷到硬盘的过程叫做编码。
将硬盘中的文件中的字符读取到内存的过程叫做解码。
内存存放字符的格式为Unicode格式。
硬盘存放字符的格式为utf-8格式

必须要记住以什么格式存放一定要以什么格式取。
python字符串默认是unicode 格式:

unicode ---> encode  ---> bytes
bytes   ---> dedcode ---> unicode
unicode 字符编码可以跨平台。

python2 字符串的默认编码就是bytes,如果要转格式需要在字符串前面加u
x=u‘你吵啥‘


21、文件的操作:
read()    读取文件。需要注意编码
readline()    读取一行
readlins()    读取文件的所有行,组成一个列表


#读取文件的内容
f = open(‘a.txt‘,‘r‘,encoding=‘utf-8‘)
res=f.read()
print(res)    #但是文件必须首先存在


#读取一行:
f = open(‘a.txt‘,‘r‘,encoding=‘utf-8‘)
res=f.readline()
print(res,end=‘‘)
print(res,end=‘‘)
print(res,end=‘‘)    #默认情况一行结束后会有\n,正常显示需要加end=‘‘

#
with open(‘a.txt‘,‘r‘,encoding=‘utf-8‘) as f:
    print(f.read())    #该方法不需要关闭文件。但是此时a.txt文件中如果有中文,如果不加encoding,读取会报错。

读取完毕之后记得要关闭文件。如果不想手动关闭记得使用with open
closed #标记文件是否已经关闭,由close()改写

input = open(‘data‘, ‘r‘)
#第二个参数默认为r
input = open(‘data‘)
读二进制文件
input = open(‘data‘, ‘rb‘)



#写入文件
写文本文件
output = open(‘data‘, ‘w‘)
写二进制文件
output = open(‘data‘, ‘wb‘)
追加写文件
output = open(‘data‘, ‘w+‘)
写入多行
file_object.writelines(list_of_text_strings)
注意,调用writelines写入多行在性能上会比使用write一次性写入要高。

#写入
f = open(‘a.txt‘,‘w‘,encoding=‘utf-8‘)
f.write(‘111111111111\n‘)    #写入文件时、文件不存在会自动创建、写入的内容是重定向到文件。
f.close()
修改文件的内容、首先先打开一个副本文件、然后逐行读取逐行替换、然后在删除原文件、将副本rename成原文件。


本文出自 “男儿该自强” 博客,请务必保留此出处http://nrgzq.blog.51cto.com/11885040/1947334

python第二天