python自动化开发-[第二天]-基础数据类型与编码(续)

今日简介:

    - 编码

    - 进制转换

    - 初识对象

    - 基本的数据类型

      - 整数

      - 布尔值

      - 字符串

      - 列表

      - 元祖

      - 字典

      - 集合

    - range/enumcate

一、编码

  encode和decode

  编码就是将字符串转换成字节码,涉及到字符串的内部表示。
  解码就是将字节码转换为字符串,将比特位显示成字符。

file = '文本'
file.decode(encoding="utf-8", errors="strict")
file.encode(encoding="gbk", errors="strict")

  encoding为要编码的格式,errors是指的是错误的处理方案

二、进制转换

  二进制:  1对应 00000001 3对应 00000011   最多支持2的8次幂

  八进制:    逢8进1位  1  2 3 4 5 6 7 10

  十进制       0 1 2 3 4 5 6 7 8 9 10

  十六进制    逢16进1位  1 2 3 4 5 6 7 8 9 A B C D E F

      各个进制的表示符号

  b:二进制,o:八进制,d:十进制,x:十六进制 

#二进制
>>> bin(10)
'0b1010'
#十进制转八进制
>>> oct(123)
'0o173'
#十进制转十六进制
>>> hex(10)
'0xa'
#十六进制转二进制

#借助十进制
>>> bin(int('fc',16))
'0b11111100'
#利用函数直接转
>>> bin(0xa)
'0b1010'
>>> oct(0xa)
'012'
>>> hex(10)
'0xa'

  

三、初识对象 

 

 四、基本数据类型-整数

#1. 当前整数的二进制表示,最少位数
>>> age = 1
>>> print (age.bit_length())
1
#2. 获取当前数据的字节表示
>>> age = 22
#将十进制用16进制展示,\x16放最后
>>> v = age.to_bytes(10,byteorder='big')
>>> print (v)
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16'
#将十进制用16进制展示,\x16放最前
>>> v = age.to_bytes(10,byteorder='little')
>>> print (v)
b'\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00'

五、基本数据类型-布尔

布尔值为False的情况
>>> print (bool(0))
False
>>> print (bool())
False
>>> print (bool(""))
False
>>> print (bool([]))
False

六、基本数据类型-字符串

1、capitalize 将字符串首字母变大写,自身不变会生成一个新的值

例子:

name = 'dragon'
v = name.capitalize()
print (v)
#输出
    Dragon        

 

2、将字符串大写变小写,比lower功能强大,casefold可以将所有语言大写变小写

例子:

name  = 'DragOn'
v = name.casefold()
print(v)
#输出
    dragon

 

3、center将字符串放中心,其余空白用*来替换,字符长度为50

例子:

name = 'dragon'
v = name.center(50,'*')
print(v)
**********************dragon**********************

 

  

4、count针对字符串里元素出现的次数做计数,支持索引范围

例子:

name = 'dragon'
v = name.count('d')
print (v)

#输出
1

v = name.count('d',1,3)
print (v)
#输出
0

 

  

5、startswith,从开头匹配字符串,endswith从结尾去匹配字符串,支持索引范围

例子:

name = 'dragon'
v = name.endswith('n',1,2)
print (v)

#输出

False

v = name.startswith('d')
print (v)
#输出
True

 

  

6、expandtabs将制表符,替换为空白,制表符前面的字符在空白内

例子:

name = 'a\tb\tc\nd\te\tf'
v = name.expandtabs(10)

print (v)

#输出
a         b         c
d         e         f  

 

  

7、find和index,find查找不存在值返回-1,index直接报错

例子:

name = 'dragon'
v = name.find('h')  #输出的是索引
print (v)

#输出
-1

name = 'dragon'
v = name.index('r')  #输出的是索引
print (v)
#输出
1

 

  

8、format格式化输出

例子:

name = '1.%s,2.%s,3.%s'
name = '1.{0},2.{1}.3.{2}'
name.format(1,2,3)
print (name)
#输出
1.{0},2.{1}.3.{2}

name = '1.{name},2.{age},3{ganner}'

name.format_map({'name':'alex','age':18,'ganner':'mid'})
print (name)
#输出
1.{name},2.{age},3{ganner}

name1 = '1.{name},2.{age},3{ganner}'
name.format(name='dragon',age=19,ganner='mid')
print (name)

#输出
1.{name},2.{age},3{ganner}

 

  

9、isidentifier,判断首个字符是否是字母、下划线开头

例子:

name  = '9dragon'
v = name.isidentifier()
print (v)
#输出
False

name = 'ale'
v = name.isidentifier()
print (v)
#输出
True

 

  

10、isupper,判断字符串是否全为大写,islower,判断字符串是否全为小写

例子:

name = 'dragon'
v = name.islower()
print (v)

#输出
Ture
name = 'DRAGON'
v = name.isupper()
print (v)
#输出
Ture

 

  

11、strip移除空白,\n,\t,自定义

例子:

name = 'wonder\t'
v = name.strip() # 空白,\n,\t
print(v)

#输出
wonder

 

12、upper,全部变大写,lower全部变小写

例子:

name = 'alex'
v = name.upper()

print (v)

#输出
      ALEX
name = 'GUEST'
v1 = name.lower()
print (v1)

#输出
    guest

 

13、isprintable,判断字符串是否包含隐藏字符

例子:

name = 'alex\t'
v = name.isprintable()
print (v)

#输出
    Flase

 

14、判断字符串是否为空白,isspace

例子:

name = '    '
v = name.isspace()
print (v)

#输出 
    True

 

15、join字符串拼接

例子:

n = 'time1'
v = '_'.join(n)
print (v)
#输出

    t_i_m_e_1

user_list = ['小花','小明','小强']

for v in user_list:
   h =  '听'.join(user_list)
print (h)

#输出
    小花听小明听小强

 

16、左右填充,ljust,rjust

例子:

name = 'me'
v = name.rjust(20)
print (len(v))

#输出
                  me

 

17、对应关系+翻译--maketrans,translate

例子:

m = str.maketrans('abcde','12345') # 对应关系

name = "akpsojfasdufasdlkfj8ausdfakjsdfl;kjer09asdf"
v = name.translate(m)
print(v)


#输出
kpsojf1s4uf1s4lkfj81us4f1kjs4fl;kj5r091s4f

 

18、大写变小写,小写变大写,swapcase

例子:

name = "Python"
v = name.swapcase()
print(v)
#输出
pYTHON

 

19、replace替换

例子:

name = 'dream'
v = name.replace('dr','st')
print (v)

#输出

steam
 

 

20、partition分割,保留分割符

例子:

 

content = "a|b|c"
v = content.partition('|')  # partition
print(v)

#输出

('a', '|', 'b|c')

 

21、判断是否为数字

例子:

num = '②'
v1 = num.isdecimal()  #'123'
v2 = num.isdigit()    #'123','②'
v3 = num.isnumeric()  #'123','二','②'
print (v1,v2,v3)

 

 

22、isalnum,isalpha

  isalnum为字符、数字 ,isalpha为字符

例子:

name = 'hello8美女'
v = name.isalnum() #字符,汉子,数字
print (v)
#输出
True
v1 = name.isalpha() #汉子
print (v1)
#输出
False

 

 

 

23、zfill,填充0

例子:

 name = "guest"
 v = name.zfill(20)
 print(v)

#输出
000000000000000guest

 

 

24、split分割,不保留分割符

例子:

name = 'alex|eric'

v = name.split('|')

print (v)

['alex,'eric'']

七、基本数据类型-列表(list)

  列表是有序可变的,可以增删改查 

1、追加功能

mail_list = ['hele','dream,''google']  #append都是从列表最后添加

v = mail_list.clear()

print (mail_list)

#输出
[]

 

2、清空clear

mail_list = ['hele','dream,''google']  #append都是从列表最后添加

v = mail_list.clear()

print (mail_list)


#输出

[]

3、copy(浅拷贝)

浅拷贝:浅拷贝,只是拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。(浅copy只有最外层会各自不影响,其余都是同一块内存地址,要更改都更改)

深拷贝:深拷贝,拷贝对象及其子对象  (深copy就是所有对象和子对象独立,互相修改没有任何影响)

例子:

user_list = ['a','b','c','d']

浅copy
v = user_list.copy()
print (v)
print (user_list)


#输出

['a', 'b', 'c', 'd']
['a', 'b', 'c', 'd']

 深浅copy的例子:

  

import copy  
a = [1, 2, 3, 4, ['a', 'b']] #原始对象  
  
b = a #赋值,传对象的引用  
c = copy.copy(a) #对象拷贝,浅拷贝  
d = copy.deepcopy(a) #对象拷贝,深拷贝  
  
a.append(5) #修改对象a  
a[4].append('c') #修改对象a中的['a', 'b']数组对象  
  
print 'a = ', a  
print 'b = ', b  
print 'c = ', c  
print 'd = ', d  

'''
输出结果: 
a = [1, 2, 3, 4, ['a', 'b', 'c'], 5] 
b = [1, 2, 3, 4, ['a', 'b', 'c'], 5] 
c = [1, 2, 3, 4, ['a', 'b', 'c']] 
d = [1, 2, 3, 4, ['a', 'b']]

'''

  

4、count(计数)

例子:

user_list = ['a','b','c','d']
v =user_list.count('a')
print (v)

#输出

4

 

5、extend扩展原列表

例子:

user_list = ['a','b','c','d']
user_list.extend(['e','f'])
print (user_list)

#输出
['a', 'b', 'c', 'd', 'e', 'f']

 

6、index,查找列表元素,没有报错

例子:

user_list = ['a','b','c','d']
print (user_list.index('a'))

#输出
0

 

7、pop,删除并获取元素-索引

pop:pop根据索引进行删除

remove: remove根据元素进行删除

例子:

user_list = ['a','b','c','d']
v = user_list.pop(1)  #根据索引进行删除
print (user_list)

#输出
['a', 'c', 'd']

user_list.remove('a')  #根据元素值进行删除
print (user_list)

#输出

['c', 'd']

 

8、reverse,反转

例子:

user_list = ['a','b','c','d']
user_list.reverse()
print (user_list)


#输出
['d', 'c', 'b', 'a']


#第二种方法,切片
print (user_list[::-1])

#输出
['a', 'b', 'c', 'd']

9、sort,排序

例子:

num = [1,3,4,5,6]
num.sort()   #从大到小
print (num)

#输出
[1, 3, 4, 5, 6]

num.sort(reverse=True)  #从小到大
print (num)
#输出

[6, 5, 4, 3, 1]

 

 

10、额外功能

user_list = ['apple','pen','cat','tom','mic','lili']
user_list[0] #根据索引查值
user_list[1:5:2] #切片+步长
del user_list[3] #根据索引删除
for i in user_list: #循环列表
    print(i)
user_list[1] = 'happy' #根据索引赋值
user_list = ['apple','pen','cat','tom',['mic,'test''],'lili' #列表嵌套列表

 八、数据基本类型-tuple(元组)

  元组的特性:属于不可变类型,不可被修改的列表

      *****元祖中套列表,字典,列表和字典是可变类型,可以被改变

      *****元祖最后要加一个逗号,避免元组里只有一个元素,被转换成字符串

1、元组计数count

例子:

user_tuple = ('a','b','c')
print (user_tuple.count('a'))

#输出
1

2、index获取索引位置

例子:

user_tuple = ('a','b','c')
print (user_tuple.index('b'))

#输出
1

3、tuple额外功能

list1 = [1,2,3,4,5]

tuple1 = tuple(list1)

print (tuple1)

#输出
(1, 2, 3, 4, 5)

for i in tuple1:
    print(i)

v = tuple1[0]  #查询

v = tuple1[0:2]  #分片
print(v)

user_tuple = tuple1
user_tuple[0] = 123   #错误方法
user_tuple[3] = [11,22,33] #错误方法
user_tuple[3][1] = '99'
print(user_tuple)

****** 元组最后,加逗号 ******
li = ('alex',)
print(li)

 

 

九、数据基本类型-dict(字典)

  字典属于可变类型,key-value结构

    字典可嵌套,字典的key必须是不可变类型

1、clear清空

dic = {'k1':'v1','k2':'v2'}
dic.clear()
print(dic)


#输出 
{}

 

2、浅copy

dic = {'k1':'v1','k2':'v2'}
v = dic.copy()
print(v)


#输出
{'k1':'v1','k2':'v2'}

3、get,根据key值获取指定的value,不存在报错

dic = {'name':'seven','age':19}
v = dic.get('name')
print (v)

#输出

seven

 

4、pop删除

dic = {'name':'seven','age':19}
dic.pop('name')
print (dic)

#输出

{'age': 19}

 

5、popitem,随机获得键值对,并获取到删除的键值

dic = {'name':'seven','age':19}
dic.popitem()
print (dic)

#输出
不固定 --> {'name': 'seven'} / {'age': 19}

 

6、setdefault,增加kv,如果存在不增加,也不替换更新

dic = {'name':'seven','age':19}
dic.setdefault('page',18)
print (dic)

#输出
{'page': 18, 'age': 19, 'name': 'seven'}


dic = {'name':'seven','age':19}
dic.setdefault('name','dr')
print (dic)

#输出
{'age': 19, 'name': 'seven'}

 

7、update,批量增加或者修改

dic = {'name':'seven','age':19}
dic.update({'sex':'mid','page':18})
print (dic)


#输出
{'name': 'seven', 'age': 19, 'page': 18, 'sex': 'mid'}

8、fromkeys

  函数用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值。dic = dict.fromkeys(['k1','k2','k3'],123)

print(dic)
dic = dict.fromkeys(['k1','k2','k3'],123)
dic['k1'] = 'guest'
print(dic)
#输出

{'k1': 123, 'k3': 123, 'k2': 123}
{'k1': 'guest', 'k3': 123, 'k2': 123}

 

 

十、数据基本类型-集合

  集合是不可重复的列表,可变类型

1、difference

s1 = {"alex",'eric','tony','happy','lili'}
s2 = {"alex",'eric','tony','anni'}
#1.s1中存在,s2中不存在
v = s1.difference(s2)
print(v)

#输出
{'lili', 'happy'}

2、difference_update

s1 = {"alex",'eric','tony','happy','lili'}
s2 = {"alex",'eric','tony','anni'}
#s1中存在,s2中不存在,然后对s1清空,然后在重新复制
s1.difference_update(s2)
print(s1)

#输出
{'happy', 'lili'}

 

3、difference_update

#s2中不存在,s1中存在,s1中不存在,s2中存在
s1 = {"alex",'eric','tony','happy','lili'}
s2 = {"alex",'eric','tony','anni'}
v = s1.symmetric_difference(s2)
print(v)

#输出
{'lili', 'happy', 'anni'}

 

4、intersection交集

s1 = {"alex",'eric','tony','happy','lili'}
s2 = {"alex",'eric','tony','anni'}
v = s1.intersection(s2)
print(v)
#输出
{'tony', 'alex', 'eric'}

 

5、union并集

s1 = {"alex",'eric','tony','happy','lili'}
s2 = {"alex",'eric','tony','anni'}
v = s1.union(s2)
print(v)

#输出
{'lili', 'alex', 'tony', 'anni', 'eric', 'happy'}

 

6、discard移除

s1 = {"alex",'eric','tony','happy','lili'}
s1.discard('alex')
print(s1)
#输出
{'tony', 'lili', 'eric', 'happy'}

 

7、update更新

s1 = {"alex",'eric','tony','happy','lili'}
s1.update({'alex','123123','fff'})
print(s1)
#输出
{'lili', 'alex', '123123', 'eric', 'fff', 'tony', 'happy'}

 

 

十一、range

python2.* : range会立刻生成数字,加载到内存中

python2.* : xrange 生成一个迭代值,只有循环迭代的时候,才会一一调用

python3.* :range会生成一个迭代值,只有循环迭代的时候,才会一一调用

for i in range(10):
    print(i)

#输出
0
1
2
3
4
5
6
7
8
9

for i in range(1,11,2): #输出奇数
     print(i)

for i in range(10,0,-1): #从大到小输出
     print(i)

 

十二、enumerate

#enumerate额外生成一列有序的数字
li = ['pie','pig','apple']
for i,v in enumerate(li,1):
    print(i,v)

#输出
1 pie
2 pig
3 apple

 

 

 

 

 

 

 

 

 

 

 

posted @ 2017-05-11 00:39  dragonliu  阅读(349)  评论(0编辑  收藏  举报