Day 7 二次编码,基础类型补充以及未来可能遇到的难点和坑

str:不可变
1.1首字母大写:
name ='alex'
name1 = name.capitalize()
print(name1)

1.2每个单词首字母大写
name ='alex wusir'
name1 = name.title()
print(name1)
print(name.title())

1.3大小写反转
name = 'Alex'
name1 = name.swapcase()
print(name1)
print(name.swapcase())

1.4 居中---填充
name = 'alex'
name1 = name.center(20,'-')
print(name1)
print(name.center(20,"-"))

1.5 查找 从左向右 只查找一个
name = 'alexaaal1'
name1 = name.find('e') #只能查找一个,并且输出值为索引。
print(name1)
print(name.find('e'))

1.6 拼接
name = 'alex'
name1 = ''.join(name)
print(name1)
print('
'.join(name))

1.7 格式化
1.格式化
2.f
3.name.format()
name = 'alex{},{},{}'
name1 = name.format(1,2,3)
print(name1)# 按照顺序位置进行填充

name = 'alex{k1},{k},{k3}'
name1 = name.format(k=1,k1=2,k3=3)
print(name1)# 按照关键字进行填充

name = 'alex{2},{0},{1}'
print(name.format('a','b','c'))# 按照索引值进行填充

    • 开辟新的空间
      name = "alex"
      name1 = "wusir"
      print(id(name))
      print(id(name1))
      print(id(name + name1))#地址都不同

list:
定义方式:
list("123")

其他方法:
lst = [1,2,23,234,435,36,23,213421,421,4231,534,65]
lst.sort() # 排序 (升序)
print(lst)

lst = ["2233","12"]
lst.sort() # 排序 (默认升序)
print(lst)

lst = [1,2,23,234,435,36,23,213421,421,4231,534,65]
lst.sort(reverse=True) # 降序
print(lst)

lst = [1,2,3,4455,5,6,7]
print(lst[::-1])1.反转
lst.reverse()2.反转
print(lst)

lst = [1,2,3,4,5123,21345,231123,4,1235,234,123]
lst.sort()
lst.reverse() 先升序,在反转
print(lst)

面试题
lst =[[]]
new_lst = lst * 5
new_lst[0].append(10)
print(new_lst)
答:
new_lst = [[10],[10],[10],[10],[10]]

lst = [1,[]]
new_lst = lst * 5
new_lst[0] = 10
print(new_lst)
答:
new_lst = [[10,[]],[1,[]],[1,[]],[1,[]],[1,[]]]

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

方式一:
lst.extend(lst1)
print(lst)
方式二:
print(lst+lst1)
new_lst = lst * 5
print(id(new_lst[0]), id(lst[0]))#地址相同

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

tuple: # 数据类型是()中数据本身
tu = (12)
print(type(tu))

tu = (1,) #(1,)是元组
print(type(tu))

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

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

随机删除 popitem
dic = {"key":1,"key3":56,"key2":2}
print(dic.popitem()) #返回的是被删除的键值对(键,值)
print(dic)
python36以上 默认删除最后一个

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

dic = dict.fromkeys("123456789",1) # 批量添加键值对"键是可迭代对象",值 -- 会被共用
dic["1"] = 18
print(dic)

set:
set()---空集合
{}---空字典
定义集合:
print(set('alex')) #迭代添加

s = {1,2,3,4} #多运行几次会出现错误答案
s.update("今天") # 迭代添加
print(s)

bool: False 除了下列表示bool为0的之外,剩下的都为真。
数字: 0
字符串: ""
列表:[]
元组:()
字典:{}
集合: set()
其他: None

数据类型之间转换
list转tuple
temp_list = [1,2,3,4,5]
print(tuple(temp_list))

tuple转list
tuple = (1,2,3,4,5)
print(list(tuple))

str--list
name = 'alex'
print(name.split())

list--str
lst = ['1','2','3']
print('_'.join(lst))

dict --str
dic = {"1":2}
print(str(dic),type(str(dic)))

set -- list

list -- set
''.join(list)

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)
答:lst = [1,2]

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

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

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

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

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

lst = [1,2,3,4,5,6]
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)

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

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

以什么编码集(密码本)进行编码就要用什么编码集(密码本)解码

今日总结
1.编码解码
编码:将文字转换字节形式 encode
解码:将字节转换文字形式 decode

2.基础数据类型补充:
str:
首字母大写 capitalize
每个单词首字母大写 title
大小写反转swapcase
居中--填充center
查找:find index
拼接 ''.join()
格式化:name.format(a)
list:
排序(默认是升序)降序sort(reverse=True)
反转 reverse
查找 index
统计 count
+ * 元素是共用的
面试题

tuple:
(1,)#元组
(1)#括号里的数据本身

dict:
popitem
fromkeeys('可迭代的键',共用的值)--坑
dict(key =1,key2 = 2)

set:
set()---空集合
set('alex')#迭代添加


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

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

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

类型转换
list--str join
str--list split

posted @ 2019-07-12 23:13  犇羴鱻龘毳  阅读(128)  评论(0编辑  收藏  举报