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"))

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

遇到的坑

版权声明:本文为hualibokeyuan原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/hualibokeyuan/p/11178119.html