数据类型

文件类型

类型 type 创建方法
数字 int可变 a = 1
字符串 str可变 a = ("asv")  注:多个元素就是元组
元组 tuple不可变 b = ("asv","aed",21)
列表(有序) list可变 c = ["asv","aed",21]
字典(无序) dict可变 d ={"v1":"bb","v2":"b3"}
集合(无序) set可变
se = {"one","tow","three"}
  1. 文件类型转换

    1. a = "xxx"
      print(a)     #字符串类型
      print(list(a))    #字符串转列表
      print(tuple(a))    #字符串转元组
      b = ["aa","bb","cc"] #列表
      b=str(tuple(b)) #列表转元组
      print(b)
      d = ("aa","bb","c") #元组
      d = str(list(d)) #元组转列表
      print(d)
     

数字

 
int          整型 
 
Long     长整型 pytyon3没有
 
Float     浮点数 1个浮点数占8字节(64位) 浮点数:带有小数的整数)
 
bool布尔   (判断真或假 ) 1==True    0==False (只有0是False 其他都是True)
    判断a列表是否存在元素
    >>> a =['aa','cc']
    >>> "bb" in a
    True
    >>> "dd" in a
    False

字符串

 
strip移除空白 
 
    >>> msg14=" adf " #前后有空格
    >>> print(msg14.strip()) #去掉左右空格,()内可加字符
    adf
    >>> print(msg14.rstrip()) #去掉右空格
    adf
    >>> print(msg14.lstrip()) #去掉右空格
    adf
split 分割      
  1. >>>user_1 = "aex|sb123|9"
    >>>v = user_1.split("|")   #分割所有,以|为分开
    >>>print (v)
    ['aex', 'sb123', '9']
    >>>v = user_1.split("|",1) #分割第一个,从左边分割
    >>>print (v)
    ['aex', 'sb123|9']
    >>>v = user_1.rsplit("|",1)#分割第一个,从右边分割
    >>>print (v)
    ['aex|sb123', '9']
     
长度     len(name) 
    按字符算 不是字节
    >>> msg17=("abc ","aa") #多个元素显示元素个数,单个元素显示字符串个数
    >>> print(len(msg17))
    2
    >>> msg17=("abc")
    >>> print(len(msg17))
    3
 
        
索引        name[2]
    >>> name
    [11, 'ad', 33]
    >>> name[2]
    33
 
切片        a[:3] 或a[3:]或a[3]
    >>> msg="nihao 123"
    >>> print(msg[1]) #范围 取位置1的值
    i
    >>> print(msg[2:5]) #:表示顺序延伸 范围 取位置2-4的值 顾头不顾尾不取位置4的值
    hao
    >>> print(msg[0:]) #:表示顺序延伸 范围 所有位置的值
    nihao 123
    >>> print(msg[0:-1]) #:表示顺序延伸 范围取值0到-2的值 顾头不顾尾不取位置-1的值
    nihao 12

   
capitalize 首字母大写
    >>> msg="hello world"
    >>> print(msg.capitalize())
    Hello world
大写变小写
    casefold
    >>>name ='AabbCc'
    >>>v = name.casefold() #lower也能实现 但不如casefold功能多,一般用casefold
    >>>print(v)
    aabbcc
    -------------------

    lower

    >>>aa = ("AaBbCc")

    >>>aa=aa.lower()

    >>>print(aa)

    aabbcc
 
小写转大写
    swapcase
    >>> name = "atlex"
    >>> result =name.swapcase()
    >>> print(result)
    ATLEX
    ----------------------
    upper

    >>>aa = ("AaBbCc")
    >>>aa=aa.upper()
    >>>print(aa)
    AABBCC
 
 
center分割行
    >>> mss="abc"
    >>> print(msg.center(20)) #20是总长度,默认空行是内容
    abc
    >>> print(msg.center(20,"*")) #20是总长度,*行内容 *长度为1    print("msg".center(20,"*")) #加"" 不用定义变量
    *******abc********
    >>> print(msg.ljust(20,"*")) #20是总长度右边填充*
    abc******
    >>> print(msg.rjust(20,"*"))  #20是总长度左边填充*
    ******abc
 
count统计元素出现的次数
    >>>name = "dfdfdaa,df,adsfasdfaga"
    >>>result = name.count("df",0,10) #统计:df出现的次数 范围:0-9个字符(有头无尾),注:不加0-10是统计所有字符
    >>>print (result)
    2
    >>>result = name.count("df",0,-1) 右边第一个到左边第0个中间的df个数
    >>>print (result)
    3
encode utf-8转gbk
>>>name ="理解"
>>>result= name.encode("gbk")
>>>print(result)
b'xc0xedxbdxe2'
endswith判断结尾数字       startswith判断结尾数字
    >>> name ="adfasdfs"
    >>> result= name.endswith("fs") #是否以fs结尾
    >>> result= name.endswith("s",0,5) #以s结尾 范围是大于等于0 小于5 判断是否为真
    >>> print(result)
    True
     
    >>> name ="adfasdfs"
    >>> result= name.startswith("ad") #是否以ad开头
    >>> result= name.startswith("a",0,5) #以s开头 范围是大于等于0 小于5 判断是否为真
    >>> print(result)
    True
expandtabs增加分割符
  1. >>> name = "a	lex"
    
    >>>name = "a	lex	guolm	qiqi
    a	b" ##	是制表符,
    换行符
    
    >>>result =name.expandtabs(20)        #20是	的行间距
    
    >>>print(result)
partition字符分割
    >>> name ="alexissb"
    >>> result= name.partition("is") #指定is为分割,分割成3段
    >>> print(result)
    ('alex', 'is', 'sb')
 
find和index 查找字符串
    >>> msg14="hello"
    >>> print(msg14.find("o")) #find 查找到元素,返回元素位置
    4
    >>> print(msg14.find("a")) #find 查找不到元素,返回-1
    -1
    >>> print(msg14.index("o")) #index 查找到元素,返回元素位置
    4
    >>> print(msg14.index("a")) #index 查找不到元素,报错
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    ValueError: substring not found
 enumerate 定义下标
    >>>li= ["eric","alex","tony"]
    >>>for i,ele in enumerate(li,1):    #1是指定第一次为1, 不指定下标默认为零
    >>> print(i,ele)
    1 eric 2 alex 3 tony
    >>>v=input("请输入商品序号")
    >>>v=int(v)
    >>>item = li[v-1]                #v-1表示:是数字v减1 ,因为定义序列下标为1, 如上使用默认就不用v-1

    >>>print(item)
 
join元素拼接
    >>> msg="aa哈站"
    >>> v="_".join(msg)
    >>> print(v)
    a_a_哈_站

    >>> name=["aa","bb","cc"]  #不能有数字 都是字符串

    >>> v="_".join(name)        #_可替换  只要for能循环的 .join都能用

    >>> print(v)

    aa_bb_cc
format 拼接
        >>> print('{0} {1} {0}'.format('name','age'))
        name age name
        >>> print ('{name}'.format(name='alex'))
        alex
        >>> print("{} {}".format("name","age"))
        name age
     
        >>> name="guolm {name} as {id}"
        >>> result = name.format(name="man",id="19")
        >>> print(result)
        guolm man as 19
     
        tpl = "我是:{name},年龄:{age},性别:{gender}"
        v = tpl.format(name='李杰',age=19,gender='随意')
        print(v)
     
     
isalnum判断是否由数字和字母或纯数字或纯字母组成
    >>> msg="12aa" ##"aAaa" "122"都为true真
    >>> print(msg.isalnum())
    True
    >>> msg="122_aa"
    >>> print(msg.isalnum())
    False
isdigit判断值为数字,整形(整数)
    >>>ms=11
    >>> print(ms.isdigit())
    True真
    >>> ms="101.1"
    >>> print(ms.isdigit())
    False假    #错误
isalpha判断由字母组成
    >>> msg="Aaa"
    >>> print(msg.isalpha())
    True
    >>> msg="122_aa"
    >>> print(msg.isalpha())
    False
isspace全是空格
    aa = " "            #只针对字符串
    print(aa.isspace())
    True

 
isdecimal判断值为十进制
    >>> ms="101"
    >>> print(ms.isdecimal())
    True
    >>> ms="101.1"
    >>> print(ms.isdecimal())
    False
islower判断全是小写
    >>>ad="aaa"
    >>>print(ad.islower())
    True
isupper判断值全是大写
    >>>ad="AAA"
    >>>print(ad.isupper())
    True
 
maketrans对应关系替换
    >>> msg16="my name is abcd"
    >>> table=str.maketrans("abcd","1234") #abcd和gulm长度必须相同
    >>> print(msg16.translate(table))
    my ngme is 1234
zfill填充
    >>> msg17="abc"
    >>> print(msg17.zfill(20)) #不够的位数用0填充
    00000000000000000abc
 
relpace转换,替换
    >>> name ="aaxissb"
    >>> result= name.replace("a","g",2) #a转换成g 范围:前2个,不加数字表示转换全部
    >>> print(result)
    ggxissb
 

元组

元组的元素不能改 但是元组的元素的元素可以修改,  
 
元组结尾必须加逗号,
 
元组的参数count和index    a = ('a',1,) 
count统计元素出现的次数
index 查找字符串(查找不到报错)
 
元组嵌套字典
    >>> t1 = (1,2,{"gg":"k3"}) #增加了字典
    >>> t1
    (1, 2, {'gg': 'k3'})
    >>> t1[2]["gg"]=2
    >>> t1
    (1, 2, {'gg': 2})
 

列表

有序,元素可以更改, 更容易的存取多个信息
 
    L = ["a",11,"var"]
    L.append("var") #追加一个,var的值添加到L的中
    print(L)
追加多个元素 extend name
= ["1","aa","cc","bb","33","22"] name.extend([55,"qq"]) print(name) 插入, 指定追加 insert
name
= ["aa","var","cc","var","33","22"] name.insert(2,"bb") #在第三元素后增加bb print(name)
pop 指定索引删除元素 默认删除最后一个元素
>>>name = ["aa","var","cc","var","33","22"] >>>name.pop() #默认删除最后一个元素 >>>print(name) ['aa', 'var', 'cc', 'var', '33'] >>>test = ["aa","var","cc","var","33","22"] >>>test.pop(0) #指定可指定索引删除,0是第一个索引 >>>print(test) ['var', 'cc', 'var', '33', '22'] remove 删除,指定删除元素var 如有多个var 删除第一次出现元素var name = ["1","var","cc","var","33","22"] name.remove("var") print(name) del 根据索引删除 name = ["a",11,"var","cc","22","aaa"] print(name) #del name[0] #删除索引1的元素 del name[0:2] #删除指定索引的元素 print(name) count 显示元素aa出现个数 name = ["1","aa","cc","aa","33","22"] print(name.count("aa")) 显示元素的位置,没有就报错 index name = ["1","aa","cc","bb","33","22"] print(name.index("cc")) 排序 从小到大 sort name = ["1","aa","cc","bb","33","22"] name.sort() print(name) 反转排序 reverse name = ["1","aa","cc","bb","33","22"] name.reverse() print(name) 更新 a=['A','B'] a[1] = 'c' print(a) (结果 a = ['A','c'] )
 

字典

字典 无序
字典的key是不可变数据类型,只能用数字,字符串,元组表示. 例如dic={"1":"v1","k1":"v1","(2.k2)":"v3"}
dict = { key : value }
key定义规则:
不可变:数字,字符串,元组      可变:列表,字典 
 
取字典子集中key的value
    name = {
    "a":{"b":"aaa","c":"ccc"},
    "v" : "vv"
    }
    print(name["a"]["c"])
增删改查
    dic = {'name':'alex','age':["aa","bb"],}
    #
    print (dic.get('name'))            #如果找不到name的vulue,返回None
    print (dic.get('name',"null"))    #如果找不到name的vulue,指定返回null
    #
    dic['gender']='female'
    print(dic)
    #
    dic['name']='guolm' #改key
    dic['age'][0]='guolm' #改key中第一个value
    print (dic)
    #删    del和pop效果一样
    del dic['name']
    print (dic)
pop 除指定key   popitem(随机删除key)
  1. >>>dic ={"a1":"v1","a2":"v2"}
    >>>dic.pop("a1") #必须指定key,key不存在,报错
    >>>dic.pop("a1","aaa") #指定删除al,al不存在,指定返回aaa
    >>>print(dic)
    {'a2': 'v2'}
     
    
        >>>dic={"k1":"v1","k2":"v2"}
        >>>v = dic.pop("k1") #删除原dic的k1,并让v获取k1的values
        >>>print(v)
        v1
        >>>print(dic)
        {'k2': 'v2'}
    
        >>>dic={"k1":"v1","k2":"v2","k3":"v3"}
        >>>print(dic)
        {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}
        >>>k,v = dic.popitem()#删除原dic的最后一个key+values,把dic的最后一个key+values 赋值给k和v
        >>>print(dic)
        {'k1': 'v1', 'k2': 'v2'}
        >>>print(k,v)
        k3 v3
        >>>print(k)
        k3
        >>>print(v)
        v3
    
     
    
        dic={"k1":"v1","k2":"v2","k3":"v3"}
        print(dic)
        {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}
        v=dic.popitem() #删除原dic的最后一个key+values,把dic的最后一个key+values 赋值给v
        print(dic)
        {'k1': 'v1', 'k2': 'v2'}
        print(v[0],v[1])
        k3 v3
        print(v)
        {'k1': 'v1', 'k2': 'v2'}
     
update增key 合并2个字典
    dic={"k1":"v1","k2":"v2","k3":"v3"}
    dic.update({"k3":"v4","k5":"v5"})   #key不存在,增加key+values,key存在改改values

    print(dic)
     {'k1': 'v1', 'k2': 'v2', 'k3': 'v4', 'k5': 'v5'}
    --------------------------

    >>>dic = {'nn':'alex','age':["aa","bb"],}
    >>>gavin = {"aa":"bb","age":["aa","c3"],'nn':'al111111ex',}
    >>>dic.update(gavin)       #合并2个字典,把gavin中key:value增加到dic,相同key相同vlaue或相同key不同vlaue,覆盖原dic的值
    >>>print(dic)
    {'nn': 'al111111ex', 'age': ['aa', 'c3'], 'aa': 'bb'}
setdefault key不存在就新增,存在就查看
dic={"k1":"v1","k2":"v2","k3":"v3"}
dic.setdefault("k3","v4")           #key不存在,增加key+values,key存在,不改values
print(dic)

{'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}
 
items 显示所有项 多用于循环
    >>> dic ={"a1":"v1","a2":"v2"}
    >>> print(dic.keys())         #显示所有key
    dict_keys(['a1', 'a2'])
    >>> print(dic.values())       #显示所有values
    dict_values(['v1', 'v2'])
    >>> print(dic.items())        #显示所有值
    dict_items([('a1', 'v1'), ('a2', 'v2')])
        dic= {"k1":"v1","k2":"v2"}
        for item in dic.items(): #items显示key+values
        print(item)
        print("------------------------------")
        for item in dic.keys(): #keys显示key
        print(item)
        print("------------------------------")
        for item in dic.values(): #values显示values
        print(item)
        print("------------------------------")
     
    ------------------------------------------------

    dic = {'nn':'alex','age':["aa","bb"],}
    ##2个for 结果一样, 建议用上边的for,下边的for效率低
    for key in dic:
        print(key,dic[key])


    for k,v in dic.items():
        print(k,v)
 
 
fromkeys多key定义相同valie
    >>> name ={"a1":"v1"}
    >>> new_dict=name.fromkeys(["k1","k2","k3"],"v2")    #k1,k2,k3,是key v2是value #内存地址相同 改一个全改
    >>> print (new_dict)
    {'k1': 'v2', 'k2': 'v2', 'k3': 'v2'}
copy浅复制
  1. >>>one = {
    "aa":"bb",
    "guolm":{"one":"1","tow":"2"},
    1:2,
    }
    tow与one的key和value相同
    >>>tow = one.copy()
    >>>print (tow)                                            
    {'aa': 'bb', 'guolm': {'one': '1', 'tow': '2'}, 1: 2}
    one第一层key和value改变,tow不改变
    >>>one["aa"] = "cc"
    >>>print(one)                                            
    {'aa': 'cc', 'guolm': {'one': '1', 'tow': '2'}, 1: 2}
    >>>print (tow)                                          
    {'aa': 'bb', 'guolm': {'one': '1', 'tow': '2'}, 1: 2}
    one第二层key和value改变,tow也改变
    >>>one["guolm"]["one"]= "3"
    >>>print(one)                                            
    {'aa': 'bb', 'guolm': {'one': '3', 'tow': '2'}, 1: 2}
    >>>print(tow)                                            
    {'aa': 'bb', 'guolm': {'one': '3', 'tow': '2'}, 1: 2}
     
    import copy
    three = one.copy,deepcopy()    #完整复制one, one如何改变 three不改变 
        
 
 

set无序集合

set是可变集合
集合没有索引 不能查看 能for循环
重复的元素不显示
 isdis.joins     是否有交集
 issubset                   子集
父集
 
intersection 交集,显示共同存在的

    >>>s1={"alex","eric","tony","李泉","李泉11"}
    >>>s2={"alex","eric","tony","刘一"}
    >>>v = s1.intersection(s2)
    >>>print(v)
    {'alex', 'eric', 'tony'}

 
difference   差集 显示某1个不同

    >>>s1={"alex","eric","tony","李泉","李泉11"}
    >>>s2={"alex","eric","tony","刘一"}
    >>>v=s1.difference(s2)                    #查看s2中不存在的
    >>>print(v)
    {'李泉', '李泉11'}

 
symmetric_difference 差集 显示2个不同

    >>>s1={"alex","eric","tony","李泉","李泉11"}
    >>>s2={"alex","eric","tony","刘一"}
    >>>v=s1.symmetric_difference(s2) #不显示s1和s2中共有的元素
    >>>print(v)
    {'李泉', '李泉11', '刘一'}

union   并集

    >>>s1={"alex","eric","tony","李泉","李泉11"}
    >>>s2={"alex","eric","tony","刘一"}
    >>>v=s1.union(s2) #显示s1和s2内的所有元素,重复的不显示
    >>>print(v)
    {'李泉11', 'tony', '刘一', 'eric', '李泉', 'alex'}

difference_update    赋值

    >>>s1={"alex","eric","tony","李泉","李泉11"}
    >>>s2={"alex","eric","tony","刘一"}
    >>>s1.difference_update(s2) #赋值,清空s1中s2存在的元素
    >>>print(s1)
    {'李泉', '李泉11'}

discard    删除

    >>>s1={"alex","eric","tony","李泉","李泉11"}
    >>>s1.discard("alex")        #删除指定元素
    >>>print(s1)
    {'tony', 'eric', '李泉', '李泉11'}

update    增加

    s1={"alex","eric","tony","李泉","李泉11"}
    s1.update({"aa","alex"})        #增加aa,#alex已存在不增加
    print(s1)
    {'李泉', 'alex', 'tony', 'aa', 'eric', '李泉11'

 
 
set不显示重复出现的元素

    >>>s2 = set(["alex","eric","tony","eric","alex",]) #不显示重复的元素 #无序
    >>>print(s2)
    {'eric', 'alex', 'tony'}
    >>>s11={1,2,3,4,5,1,2,3,4}
    >>>print(s11)
    {1, 2, 3, 4, 5}

 
difference 原set不变,新生成的去掉指定元素,

    >>>s2 = set(["alex","eric","tony","eric","alex",]) #不显示重复的元素 #无序
    s3= s2.difference(["alex","eric"]) #s3中去掉alex和eric元素,生成新s3无序集合
    >>>print(s2)
    {'eric', 'alex', 'tony'}
    >>>print(s3)
    {'tony'}

difference_update 原set中删除指定元素,新生成的set元素为None,

    >>>s2 = set(["alex","eric","tony","eric","alex",]) #不显示重复的元素 #无序
    >>>s4 =s2.difference_update(["alex","eric"]) #在s2中去掉alex和eric 改变s2无序集合的元素,
    >>>print(s2)
    {'tony'}
    >>>print(s4)
    None
 

 
 
collections计数器
    >>> import collections #定义变量
    >>> obj=collections.Counter(["aa","ww","aa","adfasfqrwfafd"]) #记录元素出现的次数
    >>> print(obj)
    Counter({'aa': 2, 'ww': 1, 'adfasfqrwfafd': 1})
     
    >>> obj.update(["eric","11","11","aa"]) #相加,元素存在的相加元素出现的次数,不存在的元素显示出现的次数
    >>> print(obj)
    Counter({'aa': 3, '11': 2, 'ww': 1, 'adfasfqrwfafd': 1, 'eric': 1})
     
    >>> obj.subtract(["eric","11","12"]) 相减,元素存在的相减元素出现的次数,不存在的元素显示负数元素的次数
    >>> print(obj)
    Counter({'aa': 3, 'ww': 1, 'adfasfqrwfafd': 1, '11': 1, 'eric': 0, '12': -1})
    >>> ret=obj.most_common(2) #显示2个出现最多次数的元素
    >>> print(ret)
    [('aa', 3), ('11', 2)]
     
    >>>for k in obj.elements(): #显示所有key
    >>>for k,v in obj.items(): #显示所有key和value
 
有序字典
>>> import collections #定义变量
>>> dic= collections.OrderedDict() #按顺序增加key和value
>>> dic["k1"]="v1"
>>> dic["k2"]="v2"
>>> dic["k3"]="v3"
>>> print(dic)
OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])
 
>>> dic.move_to_end("k1")          #k1顺序改到最后  
>>> print(dic)
OrderedDict([('k2', 'v2'), ('k3', 'v3'), ('k1', 'v1')])
 
>>> dic.popitem() #去掉最后一个元素
('k1', 'v1')
>>> print(dic) OrderedDict([('k2', 'v2'), ('k3', 'v3')])
>>> dic.pop("k1") #去掉指定元素
'v1'
>>> print(dic)
OrderedDict([('k2', 'v2'), ('k3', 'v3')])

>>>ret=(dic.pop("k3")) #pop不只是去掉k3,还可以变成其他变量

>>>print(ret)

v3

>>>dic.update({"k1":"111","k2":"222","aa":"2112"}) #更新,原元素更改.新元素增加

>>>print(dic)

OrderedDict([('k1', '111'), ('k2', '222'), ('k3', 'v3'), ('aa', '2112')])
默认字典
    >>>import collections #定义变量
    >>>dic = collections.defaultdict(list) #给dic设置默认值
    >>>dic["k1"].append("alex")            #dic中k1的默认值是alex
    >>>print(dic)
    defaultdict(<class 'list'>, {'k1': ['alex']})
 
原文地址:https://www.cnblogs.com/Gavinkwok/p/6833512.html