Python,Day2---基础

本节内容

  1. 列表、元组操作
  2. 字符串操作
  3. 字典操作
  4. 集合操作
  5. 文件操作
  6. 字符编码与转码

1、列表、元祖操作                                                                                                

  列表:

#   01  l列表
name_list = ['alwin','tom','alex','tom','jery','jim']
#取单个元素
print (name_list[0])
print (name_list[-1])
#切片--取多个元素
print (name_list[0:3])  #取下表0到3的元素,但是不包括3
print (name_list[:3])   #从头开始取,和上一句效果一样
print (name_list[3:])   #从3开始取到最后一个
print (name_list[1:-1])   #取下表0到-1的元素,但是不包括-1
print (name_list[1::2])   #从1开始取,步长为2
print (name_list[::2])    #从头开始取,步长2
#在尾部追加元素
name_list.append('newname')
print (name_list)
#在固定索引位置,插入元素
name_list.insert(2,'Sencond')
print (name_list)
name_list.insert(-1,'last')   #注意-1位置插入后,成倒数第二了。。。
print (name_list)
# 修改list值
name_list[1]='update_alex'
print (name_list)
#删除执定元素
del name_list[1]
print (name_list)
name_list.remove('tom')     #删除指定元素
name_list.pop()             #删除列表最后一个值
print (name_list)
#扩展
b = [1,2,3]
name_list.extend(b)         #将b的元素追加在name_list后
print (name_list)
#拷贝
name_copy = name_list.copy()
print (name_copy)
#统计
print (name_list.count('alwin'))    #统计元素‘alwin’出现的次数
#排序和翻转
print (name_list.sort())            #3.0里不同数据类型不允许一起排序
name_list[-1] = '3'
name_list[-2] = '2'
name_list[-3] = '1'
print (name_list.sort())
print (name_list.reverse())         #反序排序
#获取下表
print (name_list.index('tom'))      #只返回找到的第一个下标
View Code

  元祖:

    元祖和列表差不多,也是存一组数,只是它一旦创建,便不能再修改。所以又叫只读列表。如果元祖中某一个元素是变量就可以修改变量值了。

    它仅有2个方法:count、index

name = ('tom','jerry','eric','jack')

 2、字符串操作                                                                                                      

  特性:不可修改,修改之后,就会在内存空间开辟一块新得存储空间,存储新字符串;

name ='alwin\talex'
print(name.capitalize())       #大写
print(name.casefold())         #全部小写
print(name.center(50,'*'))
print(name.count('al'))        #统计al出现次数
print(name.encode())           #将字符串编码成bytes格式
print(name.endswith('w'))      #判断字符串是否以w结尾
print(name.find('l'))         #查找字符串,并返回索引
print(name.index('e'))         #返回字符串索引
print(name.expandtabs(10))      #将\t转换为多长得空格
msg = 'my name is {},and age is {}'  #字符串格式化
print(msg.format('alwin','18'))
# print((msg.isnumeric()))
# print(msg.isalnum())
# print(name.isprintable())
print(name.isspace())
print(name.istitle())
print(name.isupper())
print('|'.join(['alex','alwin']))
intab = 'aeiou'
outtab = '12345'
trantab =str.maketrans(intab,outtab)            #字符串翻译规则
str = 'this is string example...wow!!!'
print(str.translate(trantab))                   #翻译字符串
print(name.partition('\t'))                      #???
print(name.swapcase())                          #大小写互换
print(name.zfill(20))                           #输入目标字符串,如果位数不足,左边用0填充
print(name.ljust(20,'_'))                       #输入目标字符串,如果位数不足,左边用-填充
print(name.rjust(20,'_'))                       #输入目标字符串,如果位数不足,右边用-填充
print(name.isidentifier())                      #检查字符串是否符合变量命名规则
View Code

 3、字典操作                                                                                                         

  字典是一种key-value的数据类型:dict是无序得、key必须是唯一的。语法:

info={
    'username':'alwin',
    'age':18,
    'job':IT,
    'Salary':800
}
info={
    'username':'alwin',
    'age':18,
    'job':'IT',
    'Salary':800
}
###########查找#################
print('job' in info)        #标准用法
print(info.get('username')) #获取
print(info['username'])     #同上
#print(info['user'])         #如果一个key不存在,就报错,get不会,不存在只返回None
#####################################################
info['marry'] = 'yes'       #增加
print(info)
info['Salary'] = '8000'     #修改
print(info)
info.pop('marry')           #删除
del info['job']             #删除
print(info)
info.popitem()              #随机删除?删除最后一个
print(info)
###########多级字典嵌套及操作###########################
city ={
    '四川省':{
        '成都市':{
            'cd001':'成华区',
            'cd002':'锦江区',
            'cd003':'天府新区'
        },
        '绵阳市':{
            'my001':'市区',
            'my002':'乡下'
        }
    }
}
print(city)
print(city.keys())          #获取key值
print(city.values())        #获取value值
print('-----------------------------')
print(city['四川省'])      #打印市信息
print(city['四川省']['成都市'])      #打印区信息
print(city['四川省']['成都市']['cd001'])      #打印具体区

##############循环###############################
#
for key in city:
   print(key,city[key])
#②   数据量大,不要用这个
for k,v in city.items():
    print(k,v)
View Code

4、集合操作                                                                                   

  集合是一个无序的,不重复的数据组合,它的主要作用如下:

  •   去重,把一个list变成集合,就自动去重了
  •   关系测试,测试两组数据之前的交集、差集、并集等关系

  常用操作

s = set([3,5,9,10,12])           #创建数值集合
t = set('hello')                #创建一个唯一字符的集合
print('set is:',s,t)            #打印结果中,t集合自动去重
a = t | s                       #t和s的并集
print(a)
b = t & s                       #t、s 的交集是一个空集合
print(b)
c = t - s                       #t和s的差集
print(c)
d = t ^ s                       #对称差集(项在t或s中,但不会同时出现在二者中)
print(d)
d.add('x')                      #添加一项
print(d)
s.update([10,37,42])            #在s中添加多项
print(s)
print(s.remove(12))                  #在s中删除一项
print(len(s))
print('w' in s)                        #测试w是否是s成员
print('w' not in s)                    #测试w是否不是s成员
View Code

5、文件操作

  文件操作流程:

    ①,打开文件,得到文件句柄并赋值给变量

    ②,通过句柄对文件进行操作

    ③,关闭文件

  基本操作  

with open('../file/userinfo.txt') as f:     #当with代码块执行完毕时,内部会自动关闭并释放文件资源;在Python 2.7 后,with又支持同时对多个文件的上下文进行管理
    first_line = f.readline()               #默认读取第一行,如果readline中写了X,就是读取文件前X个字符
    print (first_line)
    data = f.read()                         #读取剩下的内容,文件大时,不要用
    print(data)

 

打开文件的模式有:

  r,只读模式(默认)。
  w,只写模式。【不可读;不存在则创建;存在则删除内容;】
  a,追加模式。【可读; 不存在则创建;存在则只追加内容;】
  "+" 表示可以同时读写某个文件

  r+,可读写文件。【可读;可写;可追加】
  w+,写读
  a+,同a
  "U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)

  rU
  r+U
  "b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)

  rb
  wb
  ab

 

 6、字符编码与解码

  需知:

  1.在python2默认编码是ASCII, python3里默认是unicode

  2.unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节), so utf-16就是现在最常用的unicode版本, 不过在文件里存的还是utf-8,因为utf8省空间

  3.在py3中encode,在转码的同时还会把string 变成bytes类型,decode在解码的同时还会把bytes变回string

  

import sys
print(sys.getdefaultencoding())


msg = "我爱北京天安门"
#msg_gb2312 = msg.decode("utf-8").encode("gb2312")
msg_gb2312 = msg.encode("gb2312") #默认就是unicode,不用再decode,喜大普奔
gb2312_to_unicode = msg_gb2312.decode("gb2312")
gb2312_to_utf8 = msg_gb2312.decode("gb2312").encode("utf-8")

print(msg)
print(msg_gb2312)
print(gb2312_to_unicode)
print(gb2312_to_utf8)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

  

 

 

 

  特性:不可修改

posted on 2018-04-10 17:08  星海浮沉  阅读(95)  评论(0)    收藏  举报

导航