基础数据类型补充,二次编码
2019 年 7 月 12 日
基础数据类型补充 和 一些遇到的坑
基础数据类型补充
str :
1.1 首字母大写 capitalize
name = "alex"
name1 = name.capitalize()
print(name1)
#Alex
1.2 每个单词首字母大写 title
name = "alex wusir"
name1 = name.title()
print(name1)
#Alex Wusir 字符串是不可修改的,所以必须赋值之后才可以输出
1.3 大小写反转 swapcase
name = "Alex"
name1 = name.swapcase()
print(name1)
#aLEX
1.4 居中———填充 center
name = "alex"
name1 = name.center((20))
print(name1)
# alex
name = "alex"
name1 = name.center(20,"*") #20 代表字符的宽度 ""里放的是填充的符号
print(name1)
#********alex********
1.5查找 : 从左向右,只查找一个 find index
name = "alex"
name1 = name.find("l")
print (name1)
# 1 不存在的话返回-1
name = "alex"
name1 = name.index("l")
print (name1)
# 1 index 查找如果不存在的话就报错
1.6 拼接 join
name = "alex"
print("_".join(name)) #冒号里的是拼接符号 join 后面的是可迭代对象
1.7 格式化 % f name.format() 三种方法
name = "alex {},{},{}"
name1 = name.format(1,2,3) #按照顺序进行填充
print(name1)
#alex 1,2,3
name = "alex {2},{0},{1}"
name1 = name.format("a","b","c")
print(name1)
#
alex c,a,b #按照索引位置进行填充
name = "alex {a},{b},{c}"
name1 = name.format(a=1,b=21,c=67)
print(name1)
# alex 1,21,67 #按照关键字进行填充
list
定义方式: 排序(默认升序) 反转 降序
lst = []
或者 a = list
name = "alex"
name1 = "wusir"
print(id(name))
print(id(name1))
print(id(name1+name)) #地址都不一样,+ * 开辟新的空间
#
4518631664
4518737488
4520142192
排序sort
lst = [1,2,323,34,4,56,78,90]
lst.sort()
print(lst)
#[1, 2, 4, 34, 56, 78, 90, 323]
如果是中文
lst = ["你好","我是","刘亦菲"]
lst.sort()
print(lst)
#['你好', '刘亦菲', '我是'] #按照的是python3 中自带的 utf-8 排序
反转 reverse
lst = [1,2,3,4,5,6,7]
lst.reverse()
print(lst)
#
[7, 6, 5, 4, 3, 2, 1] 就是进行倒着排序 或者利用切片还有另外一种方法
lst = [1,2,3,4,5,6,7]
print(lst[::-1])
#
[7, 6, 5, 4, 3, 2, 1]
降序
lst = [1,2,5,67,77.88,335,567,345]
lst.sort()
lst.reverse()
print(lst)
#[567, 345, 335, 77.88, 67, 5, 2, 1] #先排序后然后调了个顺序
面试题将两个列表合成一个
way1:
lst = [12,3,4,5]
lst1 = [6,7,8,9]
lst.extend(lst1)
print(lst)
#[12, 3, 4, 5, 6, 7, 8, 9]
way2:
lst = [12,3,4,5]
lst1 = [6,7,8,9]
print(lst + lst1)
#[12, 3, 4, 5, 6, 7, 8, 9]
lst = [[]]
new_lst = lst * 5 #[[], [], [], [], []]
new_lst[0].append(10) #第一层可变元素 进行改变 都改变 遇到 append一定要注意 这是修改里面的元素了
print(new_lst)
# [[10], [10], [10], [10], [10]]
下面增加一个修改不变的
lst = [1,[]]
new_lst = lst * 5 #[1, [], 1, [], 1, [], 1, [], 1, []]
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 = [12,3,4,5]
new_lst = lst * 5
new_lst[0] is new_lst[-4]
print(new_lst)
print(id(new_lst[0]),id(new_lst[-4]))
#
[12, 3, 4, 5, 12, 3, 4, 5, 12, 3, 4, 5, 12, 3, 4, 5, 12, 3, 4, 5]
4379281808 4379281808
tuple
tu = (1) #数据类型是()中数据本身
tu = (1,) #定义的是元组
元组 + * 不可变共用,可变也共用
dict
定义一个字典还有这种方式:dict(k=1,k1=2)
随机删除 popitem (被删除的是键对值)
dic = {"key1":1,"key2":2}
dic.popitem()
print(dic)
#{'key1': 1} #小声比比,一般来说在python3 中删的都是最后一个
批量添加 fromkeys
dic = {}
dic1 = dic.fromkeys("123",[23]) #键是可迭代对象 值会被共用
print(dic1)
#
{'1': [23], '2': [23], '3': [23]}
dic = dict.fromkeys("123456789",1) # 批量添加键值对"键是可迭代对象",值 -- 会被共用
dic["1"] = 18
print(dic)
#{'1': 18, '2': 1, '3': 1, '4': 1, '5': 1, '6': 1, '7': 1, '8': 1, '9': 1}
set
set()-----空集合
{} -----空字典
定义集合
set()
一些false 的情况
数字:0
字符串:""
其他:None
列表:[]
元组:()
集合:set()
调皮:3 < 2
数据类型之间转换
list tuple
tuple list
str list
name = "alex"
print(name.split()) #["alex"] 重点 重点
list str
lst = ["1","2","3"]
print(''.join(lst)) #123 重点 重点
dict -- str
dic = {"1":2}
print(str(dic),type(str(dic)))
print(dict("{1:1}"))
python 数据类型
python数据类型:
可变:
list ,dict ,set
不可变:
int bool str tuple
有序:
list,tuple,str,int,bool
无序:
dict,set
取值方式:
索引: str list tuple
直接: set ,int ,bool
键: dict
二次编码
密码本:
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"))
以什么编码集(密码本)进行编码就要用什么编码集(密码本)解码