基础数据类型补充以及二次编码

扶醉桌前 提交于 2020-02-10 01:59:54

基础数据类型补充以及二次编码

一.基础数据类型补充

1.字符串(str)

  • 首字母大写
# .capitalize()
name = "meet"
s = name.capitalize()
print(s)     #Meet
  • 每个单词首字母大写
# .title()
name = "meet alex"
s = name.title()
print(s)    #Meet Alex
  • 大小写反转
# .swapcase()
name = "MeeT"
s = name.swapcase()
print(s)    #mEEt
  • 居中--填充
# .center()
name = "meet"
s = name.center(10,"*")
print(s)    #***meet***
  • 查找(从左向右,之查找一个)
# .find()   .index()
name = "meet"
s = name.find("e")
print(s)     #1       #find查找不存在的就返回-1

s = name.index("t")
print(s)     #3       #index查找不存在的就报错
  • 拼接
# .join()
name = ["meet","alex"]
s = "_".join(name)        #拼接符.join(可迭代对象)
print(s)     #meet_alex   
  • 格式化
1.%s
2.f
3.name.format()
  按照索引位置进行填充
    name = "alex{},{}"
    print(name.format(1,2))    # alex1,2
  按照索引值进行填充
    name = "alex{1},{0}"
    print(name.format("a","b"))  #alexb,a
  按照关键字进行填充
    name = "alex{a},{b}"
    print(name.format(a=1,b=2))  #alex1,2

2.列表

定义方式 list(可迭代对象) + * 元素都是共用的

  • 排序(默认升序)
# lst.sort()
lst = [1,5,3,2,4]
lst.sort()
print(lst)    #[1, 2, 3, 4, 5]
  • 降序
# lst.sort(reverse=True)
lst = [1,2,3,4,5]
lst.sort(reverse=True)
print(lst)   #[5, 4, 3, 2, 1]
  • 反转
# lst.reverse()
lst = [1,2,3,4,5]
lst.reverse()
print(lst)       #[5,4,3,2,1]
print(lst::-1)   #[5,4,3,2,1]
  • 面试题
lst = [[]]
new_lst = lst * 5
new_lst[0].append(10)
print(new_lst)     #[[10], [10], [10], [10], [10]]
     
lst = [1,[]]
new_lst = lst * 5
new_lst[0] = 10
print(new_lst)    #[10, [], 1, [], 1, [], 1, [], 1, []]

lst = [1,[]]
new_lst = lst * 5
new_lst[1] = 10
print(new_lst)   #[1, 10, 1, [], 1, [], 1, [], 1, []]

lst = [[]]
new_lst = lst * 5
new_lst[0].append(10)
print(new_lst)   #[[10], [10], [10], [10], [10]]

合并列表
方式一:
lst = [1,2,3]
lst1 = [4,5,6]
lst.extend(lst1)
print(lst)       #[1,2,3,4,5,6]
方式二:
lst = [1,2,3]
lst1 = [4,5,6]
print(lst + lst1) #[1,2,3,4,5,6]

3.元组

tu = ("1")    ()中的数据类型是数据本身
tu = (1,)     --元组

元组可以 + *   不可变的共用,可变的也共用

4.字典

定义一个字典: dict(k = 1,k1 = 2)

# 随机删除
dic.popitem()   
print(dic.popitem())    --返回的是被删除的键值对

# 批量添加键值对   键是可迭代对象,值是共用的
dict.fromkeys()

dic = {}
dic.fromkeys("123",[23]) 
print(dic)     # {}

dic = {}
print(dic.fromkeys("123",[23]))  
              #{'1': [23], '2': [23], '3': [23]}


5.集合

空集合--  set()     
空字典--{}

定义集合:    set("alex")  #{'a', 'e', 'l', 'x'}  迭代添加的

6.布尔值

False:
数字:0
字符串:""
列表:[]
元组:()
字典:{}
集合:()
其他:None
    

二.数据类型之间的转换

# 元组转列表(tuple --> list)
  list(tuple)

# 列表转元组(list --> tuple)
  tuple(list)

#字符串转列表(str --> list)
   s = "abc"
   s1 = s.split(" ")
   print(s1)    #['abc']
    
#列表转字符串(list --> str)
   s = ["abc"]
   print("".join(s))  #abc

#字典转字符串(dict --> str)
  dic = {"a":1,"b":2}
  print(str(dic))    #{'a': 1, 'b': 2}
   
#集合转列表(set --> list)
  set = {"a",1}
  print(list(set))   #[1, 'a']

#列表转集合(list --> set)
  lst = [1,2,3]
  print(set(lst))   #{1,2,3}

python数据类型

可变:list,dict,set
    
不可变:int,bool,str,tuple
 
有序:list,tuple,str,int,bool

无序:dict,set

取值方式:
索引取值:str,list,tuple
直接取值:set,int,bool
用键取值:dict

三.会遇到的坑

#列表删除:从后向前删除
#        创建一个新的列表,删除旧的列表

#字典删除:循环的时候不能改变源数据的大小(可以改变值)
#       创建一个新的字典,删除旧的字典

#集合删除:循环的时候不能改变源数据的大小

lst = [1,2]
for i in lst:
    lst.append(3)
print(lst)            #死循环

删除列表的坑:
    
lst = [1,2,3,4]
for i in lst:
    lst.pop()
print(lst)           #[1,2]

lst = [1,2,3,4]
for i in lst:
    lst.pop(0)
print(lst)          #[3,4]

lst = [1,2,3,4]
for i in lst:
    lst.remove(i)
print(lst)          #[2,4]

成功删除的方式:
lst = [1,2,3,4]
for i in range(len(lst)):
    lst.pop()
print(lst)          #[]

lst = [1,2,3,4]
for i in range(len(lst)-1,-1,-1)
    del lst[i]
print(lst)          #[]

lst = [1,2,3,4]
for i in range(len(lst)):
    del lst[-1]
print(lst)         #[]

lst = [1,2,3,4]
lst1 = lst.copy()
for i in lst1:
    lst.remove(i)
print(lst)         #[]


删除字典的坑:       #字典的迭代会改变原来的大小(不能加不能删)
dic = dict.fromkeys("12345",1)  
for i in dic:
    dic[i] = "123"
print(dic)    
       #{'1': '123', '2': '123', '3': '123', '4': '123', '5': '123'}
    
dic = dict.fromkeys("12345",1)
dic1 =dic.copy()
for i in dic1:
    dic.pop(i)
print(dic)        #{}

#集合和字典都是迭代的时候不能改变原来的大小

四.二次编码

ascii --没有中文

gbk --英文8b(位) 1B(字节) 中文16b 2B

Unicode -- 英文16b 2B 中文 32b 4B

utf-8 -- 英文8b 1B 欧洲16b 2B 亚洲24b 3B

encode()  --编码    decode() --解码

name = "你好啊"
s1 = name.encode("utf-8")   # 编码  
s2 = s1.decode("utf-8")     #解码
print(s2)
s2 = name.encode("gbk")     # 编码      
print(s2.encode("gbk"))     #解码

# 以什么编码集(密码本)进行编码就要用什么编码集(密码本)解码
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!