Python之数据类型的常用方法

常用方法汇总

1. int类 
 方法汇总:
变量名.to_bytes('数字',"little"\"big")     # (把数字转换成bytes)
               # 数字表示转换后几个字节表示      little在前面,big在后面(大小端)
int.from_bytes("要转换的东西","little"\"big")    # 字节转换成数字
bit_length() # 判断当前十进制数字占二进制的位数
# 新加功能:big 和little 在这里是一个大小端,big 在后,little在前
# to_bytes()   从数字转换字节
a =5
new_bytes = a.to_bytes(2,"big")
print(new_bytes)

a =5
new_bytes = a.to_bytes(2,"little")
print(new_bytes)


# from_bytes()   从字节转换成数字
a =5
new_bytes = a.to_bytes(1,"little")
new_a = int.from_bytes(new_bytes,"big")

print(new_bytes)
print(new_a)

# 结果:
b'\x00\x05'
b'\x05\x00'
b'\x05'
5

  

2. str类
  方法汇总:
str.lower()     # 只能做英文
str.casefold()    # 包含小语种        β-->ss的大写
str.center('总长度',"前后填充")
str.ljust('总长度',"后面填充")
str.rjust('总长度',"前面填充")
str.count("序列","起始位","结束位")  # 查看序列是否存在
str.expandtabs('总位数')     # xxx\t  一共占多少位,可以做简单表格形式
      # \n 或 \r\n 换行符  \t制表符
str.find("字符")    # 找到字符所在第一个位置的索引,没有时,返回-1
str.index("字符")    # 找到字符所在第一个位置的索引,没有时,报错
str.format()    # 字符串格式化(重点)   
    name = "我叫{name},年龄{age}-{name}"
    1 val= name.format("aaa","dddd")
    2 val= name.format(*["aaa","dddd"])
    3 val= name.format(name="aaa",dddd)
    4 dic = {"name":"aaa","age":"dddd"}
      val= name.format(**dic)
    # 1 和 4 常用
str.format_map()   # 字符串格式化
      dic = {"name":"aaa","age":"dddd"}
      val= name.format_map(dic)  # (只能写字典)
str.isalnum()        # 判断中文或字母或数字存在---True
str.isalpha()        # 判断中文和字母
str.isdecimal()        # 数字
str.isdigit()        # 数字
str.isnumeric()        # 数字
str.isidentifier()  # 判断是否为关键字或python内置使用,叫做标识符(python已经赋予意义)
str.islower()       # 是否全为小写
str.isprintable()   # 是否可以全部打印
str.isspace()       # 是否全为空格
str.title()         # 变成标题
str.istitle()        # 是否为标题(首字母变大写)
str.partition()        # 分割并且保留分割符(结果是元组)
str.splitlines()    # 根据换行符分割
str.swapcase()        # 大写变小写 小写变大写
str.maketrans("原内容","新内容")    # 依次替换
# str.capitalize() 首字母变大写
v = "adgdakl13235"
new_v = v.capitalize()
print(new_v)

# str.casefold() 变小写有英语,还包含小语种
v = "aDGHHdak"
new_v =  v.casefold()
print(new_v)

# str.islower()    是否全为小写
v = "aDGHHdak"
new_v =  v.islower()
print(new_v)

# str.isupper()    是否全为大写
v = "aDGHHdak"
new_v =  v.isupper()
print(new_v)

# str.lower()   变小写
v = "aDGHHdak"
new_v =  v.lower()
print(new_v)

# str.uppper()   变小写
v = "aDGHHdak"
new_v =  v.upper()
print(new_v)

# str..swapcase()     大写变小写 小写变大写
v = "aDGHHdak"
new_v =  v.swapcase()
print(new_v)

# str.center(总长度,"前后填充")
v = "aDGHHdak"
new_v = v.center(25,"%")
print(new_v)

# str.ljust(总长度,"后面填充")
v = "aDGHHdak"
new_v = v.ljust(25,"%")
print(new_v)

# str.rjust(总长度,"前面填充")
v = "aDGHHdak"
new_v = v.rjust(25,"%")
print(new_v)

# str.zfill()    给定一个总长度,只能从前面填充,只能填充0
name = 'alex'
v = name.zfill(20)
print(v)

# str.count("序列","起始位","结束位") 查看序列是否存在
v = "aDGHHdaHkFHFGJH"
print(v.count("H",3,7))

# str.encode()  字符串(Unicode编码)转换成其他编码形式
v = "海角"
new_v = v.encode("utf-8")
print(new_v)

# str.expandtabs(总位数)     xxx\t  一共占多少位,可以做简单表格形式
# \n 或 \r\n 换行符  \t制表符
v = "aDG\tHH\tdaH\naDG\tHH\tdaH\naDG\tHH\tdaH"
new_v = v.expandtabs(10)
print(new_v)

# str.find("字符")      找到字符所在第一个位置的索引,没有时,返回-1
v = "aDGHHdaHkFHFGJH"
new_v = v.find("H")
print(new_v)
v = "aDGHHdaHkFHFGJH"
new_v = v.find("b")
print(new_v)

# str.rfind("字符")      右边开始找到字符所在第一个位置的索引,没有时,返回-1
v = "aDGHHdaHkFHFGJH"
new_v = v.rfind("H")
print(new_v)
v = "aDGHHdaHkFHFGJH"
new_v = v.rfind("b")
print(new_v)

# str.index("字符")      找到第一个字符所在位置的索引,没有时,报错
v = "aDGHHdaHkFHFGJH"
new_v = v.index("H")
print(new_v)
v = "aDGHHdaHkFHFGJH"
new_v = v.index("b")
print(new_v)

# str.index("字符")      找到第一个字符所在位置的索引,没有时,报错
v = "aDGHHdaHkFHFGJH"
new_v = v.rindex("H")
print(new_v)
v = "aDGHHdaHkFHFGJH"
new_v = v.rindex("b")
print(new_v)

# (重点)变量名.format()      字符串格式化
v = "我叫{name},年龄{age}-{name}"
val = v.format("aaa","dddd")
print(val)
val= v.format(*["aaa","dddd"])
print(val)
val= v.format(name="aaa",age = "11")
print(val)
dic = {"name":"aaa","age":"dddd"}
val= v.format(**dic)
print(val)

# 标注:1 和 4 常用

# str.format_map()   字符串格式化
v = "我叫{name},年龄{age}-{name}"
dic = {"name":"aaa","age":"dddd"}
val= v.format_map(dic)       #(只能写字典)
print(val)

# str.isalnum()   判断中文或字母或数字存在---True
v = "aagkf243变量"
print(v.isalnum())
.isalpha()     # 判断中文和字母
v = "aagkf243变量"
print(v.isalpha())

# str.isdecimal()     判断数字是否存在
name = '123'
print(name.isdecimal()) # 123

# str.isdigit()           数字
name = '②123'
print(name.isdigit())   # 123  ②

# str.isnumeric()          数字
name = '二十②123'
print(name.isnumeric()) # 123  ② 二十

# 连接符.join(可迭代对象)
li = ["978","6745","435","24","12"]
new_li = "*".join(li)
print(new_li)

# str.strip()   去空格
name = '  aff  '
val = name.strip()
print(name)
print(val)

# str.lstrip()   去左边空格
name = '  aff  '
val = name.lstrip()
print(name)
print(val)

# str.rstrip()   去右边空格
name = '  aff  '
val = name.rstrip()
print(name)
print(val)

# str.replace()  替换
msg = "asdefasdfja"
val = msg.replace("a","##",2)
print(val)

# str.maketrans("原内容","新内容")  依次替换
# str.translate() 转换,把maketrans替换的内容转换出来
table = str.maketrans("aeiou",'12345')
msg = "asdefasdfjasdifw[kmnakjudfasdf"
val = msg.translate(table)
print(val)

# str.partition()    分割并且保留分割符,(结果是元组)
v = "akl\nalf\nkal\nakl"
val = v.partition("\n")       #只有一次
print(val)

# str.rpartition()    从右分割并且保留分割符,(结果是元组)
v = "akl\nalf\nkal\nakl"
val = v.rpartition("\n")      #只有一次
print(val)

# str.split()       分割不保留分割符,结果是列表
v = "akl\nalf\nkal\nakl"
val = v.split("\n")
print(val)

# str.rsplitl()   从右边分割 ,分割不保留分割符, 结果是列表
v = "akl\nalf\nkal\nakl"
val = v.rsplit("\n")
print(val)

# str.splitlines()   根据换行符分割 , 结果是列表
v = "akl\nalf\nkal\nakl"
val = v.splitlines()
print(val)

# str.startswith()   检测是否以xxx开头
v = "aklalfkalakl"
val = v.startswith("a")
print(val)

# str.endswith()   检测是否以xxx结尾
v = "aklalfkalakl"
val = v.endswith("kl")
print(val)

# str.isidentifier() 判断是否为关键字或python内置使用,叫做标识符(python已经赋予意义)目前有歧义

# str.isprintable()       是否可以全部打印
name = '二十\n123'
val = name.isprintable()
print(val)

# str.isspace()   是否全为空格
name = '二十\n123'        #空字符串也是False
val = name.isspace()
print(val)

# str.title()    变成标题,首字母大写
name = 'afklsdssdf'
val = name.title()
print(val)

 


3. list类
list.count("元素")    # 判断元素是否存在于列表中,并且返回个数
list.clear()    # 列表.clear()
list.extand("可迭代对象")  # 传递 批量append,批量传递,如果是字符串,会把每个字符拆开来放进去,所以里面要放可迭代对象

v= list.pop('索引') # 删除并且获取到赋值给变量
# v 就是被删掉的东西

list.remove('值')   # 重复时只能删第一个
list.sort(reverse=True)     # 排序 默认False从小到大 True从大到小
list.index("值", '起始位置', '终止位置')   # 找到字符所在第一个位置的索引,没有时,报错


# 深浅拷贝的规则和基本形式:列表里才会这样
    li = ["11","22","33"]
    val = li.append("44")
    print(val)    # val没有意义,为none

    li1 = ["11","22","33"]
    li2 = li1    # 指向同一个内存
    print(li1,li2)
    val = li.append("44")    #li2也会发生变化
    print(li1,li2)

    li1 = ["11","22","33"]
    li2 = ["11","22","33"]    #指向两块内存
    
    # copy  复制     
      # 浅拷贝   列表.copy()    只拷贝最外层,改变后一样
            li1 = ["11", "22", "33"]
            li2 = li.copy()
      # 深拷贝    import copy     所有层都拷贝,最后一层补不拷贝,改变后不一样
          import copy
            li1 = ["11","22","33"]
            li2 = copy.deepcopy()
    
    # ****单个列表时,在只有数字,字符串的时候,深浅拷贝一样****
    # *****嵌套时才有区别*****

# 列表'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'

append()   # 尾部添加,
li = [11,22,11,33,44]
li.append(666)
print(li)

# 浅拷贝的一种形式,列表里才会这样
li = ["11","22","33"]
val = li.append("44")
print(val)  #val没有意义,为none

li1 = ["11","22","33"]
li2 = li1       #指向同一个内存
print(li1,li2)
val = li.append("44")       #li2也会发生变化
print(li1,li2)

li1 = ["11","22","33"]
li2 = ["11","22","33"]#指向两块内存

#copy  浅拷贝  只拷贝最外层,指向同一块内存
# ****单个列表时,在只有数字,字符串的时候,深浅拷贝一样****
li1 = ["11","22","33"]
li2 = li1.copy()    #这里相当于重新创建了一个列表 但是列表内元素所指向的是同一块内存
print(li2)
li1.append(666)
print(li1)
print(li2)
# 结果:
['11', '22', '33']
['11', '22', '33', 666]
['11', '22', '33']

# 深拷贝  所有层都拷贝,最后一层补不拷贝,改变后不一样。单个列表时,在只有数字,字符串的时候,深浅拷贝一样
import copy
li1 = ["11","22","33"]
li2 = copy.deepcopy(li1)
print(li2)
li1.append(666)
print(li1)
print(li2)
# 结果:
['11', '22', '33']
['11', '22', '33', 666]
['11', '22', '33']

# *****嵌套时才有区别*****
# 浅拷贝
li1 = ["11","22","33",[11,22,33]]
li2 = li1.copy()    #这里相当于重新创建了一个列表 但是列表内元素所指向的是同一块内存
print(li2)
li1[3].append(666)  #因为指向同一块内存,所以li2也会改变
print(li1)
print(li2)
# 结果:
['11', '22', '33', [11, 22, 33]]
['11', '22', '33', [11, 22, 33, 666]]
['11', '22', '33', [11, 22, 33, 666]]

# 深拷贝
import copy
li1 = ["11","22","33",[11, 22, 33]]
li2 = copy.deepcopy(li1)#     这里是把li1里所有的东西都重新创建了一份 ,li1 li2指向不同的内存,
print(li2)
li1.append(666)       #因为指向不同的内存,所以li1改变  li2不会改变
print(li1)
print(li2)
# 结果:
['11', '22', '33', [11, 22, 33]]
['11', '22', '33', [11, 22, 33], 666]
['11', '22', '33', [11, 22, 33]]

# .clear     全部清空       列表.clear()
li = [11, 22, 11, 33, 44]
li.clear()
print(li)

# 判断元素是否存在于列表中,并且返回个数
.count("元素")       
li = [11,22,11,33,44]
v = li.count(11)
print(v)

# .extand("可迭代对象")  传递 批量append
# 如果是字符串,会把每个字符拆开来放进去,所以里面要放可迭代对象
li = [11,22,33,44]
li.extend("aaa")
print(li)

li = [11,22,33,44]
li2 = ["aaa","bbb"]
li.extend(li2)
print(li)

# pop 删除     v= li.pop(索引) 删除并且获取到赋值给变量  v 就是被删掉的东西
li = [11,22,33,44]
li.pop(1)    #默认删除最后一个,也可以指定
print(li)

# .remove(值)   重复时只能删第一个
li = [11,22,33,44,33]
li.remove(33)
print(li)


.sort(reverse=True)     # 排序 默认False从小到大 True从大到小
li = [11,22,33,44,33]
li.sort()
print(li)

li = [11,22,33,44,33]
li.sort(reverse=True)
print(li)


# .index("值",起始位置,终止位置)   找到字符所在第一个位置的索引,没有时,报错
li = [11,22,33,44,33]
v = li.index(33)
print(v)

li = [11,22,33,44,33]
v = li.index(666)
print(v)

# .insert()  在指定位置插入
li = [11,22,33,44,33]
li.insert(2,"8888")
print(li)

# .reverse() 反转
li = [11,22,33,44,]
li.reverse()
print(li)
 

 

4. tuple类
  方法汇总:
index("值", '起始位置', '终止位置')  # 找到字符所在第一个位置的索引,没有时,报错
count()   # 判断元素是否存在于列表中,并且返回个数
count()      # 判断元素是否存在列表中,并返回个数
tu = (11,22,11,33,44)
v = tu.count(22)
print(v)

tuple.index("值",'起始位置', '终止位置')   # 找到字符所在第一个位置的索引,没有时,报错
tu = (11,22,33,44,33)
v = tu.index(33)
print(v)

  



5. dict类
  方法汇总:
# 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values'
dict.clear()  # 清空
dict.copy()     # 和列表一样
dict.pop("key","默认值")  # 删掉key值对应的值,并取出来,,,key不存在时报错,加了默认值,就不会报错,打印默认值
dict.popitem()  # 随机删掉键值对  操作完位为元组类型
dict.setdefalut("key","value")   # 设置:只添加不修改,有key时,不改变
dict.update({"key":"value"})  # 更新  不存在加进去,存在时更新

dict.fromkeys()  # 生成一个字典
val = dict.fromkeys(["k1","k2","k3"],value)
    # value 是一个可变数据类型时,对val做操作后,所有的key对应的value都变化
    # value 是一个不可变类型时,更改其中一个时不会全部改变,只改变其中一个

 

# 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values'

# clear 清空
d = {"k1":"v1","k2":"v2","k3":"v3"}
d.clear()
print(d)

# copy  浅拷贝  只拷贝最外层,指向同一块内存
# ****单个字典时,在只有数字,字符串的时候,深浅拷贝一样****
d1 = {"k1":"v1","k2":"v2","k3":"v3"}
d2 = d1.copy()    # 这里是重新创建了一个字典,但是字典内的元素指向同一个内存
print(d2)
d1["k1"] = 666
print(d1)
print(d2)

# 深拷贝,所有层都拷贝,最后一层补不拷贝,改变后不一样
# ****单个字典时,在只有数字,字符串的时候,深浅拷贝一样****
import copy
d1 = {"k1":"v1","k2":"v2","k3":"v3"}
d2 = copy.deepcopy(d1)    # 这里是重新创建了一个字典,
print(d2)
d1["k1"] = 666
print(d1)
print(d2)

# *****嵌套时才有区别*****
# 浅拷贝
d1 = {"k1":[11,22,33],"k2":"v2","k3":"v3"}
d2 = d1.copy()    # 这里是重新创建了一个字典,但是字典内的元素指向同一个内存
print(d2)
d1["k1"].append(666)    #因为指向同一个内存,所以d1改变d2也会改变
print(d1)
print(d2)

# 深拷贝
import copy
d1 = {"k1":[11,22,33],"k2":"v2","k3":"v3"}
d2 = copy.deepcopy(d1)    # 这里是重新创建了一个字典,d1 d2 指向不同的内存
print(d2)
d1["k1"] = 666     # 因为指向不同的内存,所以d2不会改变
print(d1)
print(d2)

 # 重点 类.fromkeys()    dict.fromkeys()     生成一个字典
# value 是一个可变数据类型时,对val做操作后,所有的key对应的value都变化
# value 是一个不可变类型时,更改其中一个时不会全部改变,只改变其中一个
val = dict.fromkeys(["k1","k2","k3"],6666)
print(val)
val["k1"] = "aaa"
print(val)

val = dict.fromkeys(["k1","k2","k3"],[11,22,33])
print(val)
val["k1"].append("qqqq")
print(val)

# get()  取到key,没有时返回None
d = {"k1":"v1","k2":"v2","k3":"v3"}
print(d.get("k2"))

# keys() 取到所有key 常和for循环一起用
d = {"k1":"v1","k2":"v2","k3":"v3"}
for v in d.keys():
    print(v)

# values() 取到所有value 常和for循环一起用
d = {"k1":"v1","k2":"v2","k3":"v3"}
for v in d.values():
    print(v)

# items() 取到所有键值对 常和for循环一起用
d = {"k1":"v1","k2":"v2","k3":"v3"}
for v in d.items():
    print(v)


# pop("key","默认值")  删掉key值对应的值,并取出来,,,key不存在时报错,加了默认值,就不会报错,打印默认值
d = {"k1":"v1","k2":"v2","k3":"v3"}
v = d.pop("k2")
print(v)
print(d)

d = {"k1":"v1","k2":"v2","k3":"v3"}
v = d.pop("k12",888)
print(v)
print(d)

# popitem()  随机删掉键值对  操作完为元组类型
d = {"k1":"v1","k2":"v2","k3":"v3"}
v1,v2 = d.popitem()
print(v1,v2)
print(d)

# setdefalut("key","value")   设置:只添加不修改,有key时,不改变
d = {"k1":"v1","k2":"v2","k3":"v3"}
d.setdefault("k5","v5")
print(d)

d = {"k1":"v1","k2":"v2","k3":"v3"}
d.setdefault("k2","v5")
print(d)

# update({"key":"value"})  更新  不存在加进去,存在时更新
d = {"k1":"v1","k2":"v2","k3":"v3"}
d.update({"k2":"v5"})
print(d)

d = {"k1":"v1","k2":"v2","k3":"v3"}
d.update({"k5":"v5"})
print(d)

  

 

6. set类
  方法汇总:
add()    # 添加,如果存在不添加
copy()    # 拷贝
update()   # 更新,没有返回值

# 差集(后面的元素一般是可迭代对象)
    v.difference(n)   # v中存在n中不存在的数据,并取出
    v.difference_update(n)     # 找到v中存在n中不存在的数据,并更新v中的值,
# 对称差集
    v.symmetric_difference(n)      # 去掉v,n中相同的元素,并取出
    v.symmetric_difference——update(n)      # 去掉v,n中相同的元素,并更新v中的值
# 交集
    intersection()
    intersection_update()
# 并集
    union()
    isdisjoint()   # 有交集False,没有True
    v.issubset(n)  # 判断v是否是n的子集
    v.issuperset()     # 判断v是否是n的父集
# 删除集合元素
    pop()  # 随机删除
    remove()   # 没有时报错
    discard()  # 没有时不报错
# add()      添加,如果存在不添加
s = {"a1","a2"}
s.add("a3")
print(s)

# copy  浅拷贝  只拷贝最外层,指向同一块内存
# ****单个集合时,在只有数字,字符串的时候,深浅拷贝一样****
s = {"a1","a2"}
s1 = s.copy()         # 重新创建了一个集合,
print(s1)
s.add("a3")           # 所以s改变,s1不改变
print(s)
print(s1)

# 深拷贝 所有层都拷贝,最后一层补不拷贝,改变后不一样
# ****单个集合时,在只有数字,字符串的时候,深浅拷贝一样****
import copy
s = {"a1","a2"}
s1 = copy.deepcopy(s)     # 重新创建了一个集合,
print(s1)
s.add("a3")           # 所以s改变,s1不改变
print(s)
print(s1)

# *****嵌套时才有区别*****
# 浅拷贝  只拷贝最外层,指向同一块内存, 重新创建了一个集合,但是集合中的元素指向一个内存,,所以会都改变
# 深拷贝 除最后一层全部拷贝,拷贝后指向两个内存,所以不会一起改变

# clear()清空
s = {"a1","a2"}
s.clear()
print(s)

# 删除集合元素
# pop()  随机删除
v = {"11", "22", "33", "44", "55"}
v.pop()
print(v)

# remove()   在集合中删除指定值 没有时报错
v = {"11", "22", "33", "44", "55"}
v.remove("22")
print(v)

v = {"11", "22", "33", "44", "55"}
v.remove("77")
print(v)

# discard() 在集合中删除指定值 没有时不报错
v = {"11", "22", "33", "44", "55"}
v.discard("22")
print(v)

v = {"11", "22", "33", "44", "55"}
v.discard("77")
print(v)

# update()   更新  不用接收
v = {"11", "22", "33", "44", "55"}
n = {"aaa","sss"}
v.update(n)
print(v)


# 差集(后面的元素一般是可迭代对象)
# v.difference(n)   v中存在n中不存在的数据,并取出
v = {"11","22","33","44","55"}
n = {"44","55","66","77","88"}
a = v.difference(n)
print(a)

# v.difference_update(n)     找到v中存在n中不存在的数据,并更新v中的值,
v = {"11","22","33","44","55"}
n = {"44","55","66","77","88"}
v.difference_update(n)
print(v)

# 对称差集
# v.symmetric_difference(n)  去掉v,n中相同的元素,并取出
v = {"11","22","33","44","55"}
n = {"44","55","66","77","88"}
a = v.symmetric_difference(n)
print(a)

# v.symmetric_difference_update(n)   去掉v,n中相同的元素,并更新v中的值
v = {"11","22","33","44","55"}
n = {"44","55","66","77","88"}
v.symmetric_difference_update(n)
print(v)

# 交集
# intersection()     找到v,n中相同的元素,并取出
v = {"11","22","33","44","55"}
n = {"44","55","66","77","88"}
a = v.intersection(n)
print(a)

# intersection_update()      找到v,n中相同的元素,并更新v中的值
v = {"11","22","33","44","55"}
n = {"44","55","66","77","88"}
v.intersection_update(n)
print(v)

# isdisjoint()  判断是否无交集 有交集False,没有True
v = {"11","22","33","44","55"}
n = {"44","55","66","77","88"}
a = v.isdisjoint(n)
print(a)

# union()  并集
v = {"11","22","33","44","55"}
n = {"44","55","66","77","88"}
a = v.union(n)
print(a)

# v.issubset(n)  判断v是否是n的子集
v = {"44","55"}
n = {"44","55","66","77","88"}
a = v.issubset(n)
print(a)

# v.issuperset(n)    判断v是否是n的父集
v = {"44","55","66","77","88"}
n = {"44","55"}
a = v.issuperset(n)
print(a)

# 去重  相当于变成集合类型的数
li = ["44","55","66","77","88","44","44"]
v = set(li)
print(v)

  

 

 
 

 

posted @ 2018-09-19 11:45  chitalu  阅读(221)  评论(0编辑  收藏  举报