• python 数据类型


    数据类型

    类型判断

    #类型判断
    a=5
    r=isinstance(a,int)
    print(r)
    #范围判断
    r2=isinstance(a,(int,float))
    print(r2)

    字符串

    列表

    常规操作

     列表转为变量

    '''
    列表拆分为变量
    '''
    l2=[1,2,3]
    a,*c=l2
    print(a,c)
    View Code

    使用案例

    删除列表中重复元素,并保持顺序不变

    '''
    删除列表中重复元素,并保持顺序不变
    '''
    
    def dedupe(items):
        '''
        对对可哈希类型排序
        :param items:
        :return:
        '''
        seen=set()
        for item in items:
            if item not in seen:
                yield item
                seen.add(item)
    
    def buha(items,key=None):
        '''
        对所有类型排序
        :param items:
        :param key:
        :return:
        '''
        seen=set()
        for item in items:
            val=item if key is None else key(item)
            if val not in seen:
                yield item
                seen.add(val)
    if __name__ == '__main__':
        a=[5,5,2,1,6,7,3]
        print(a)
        print(list(dedupe(a)))
    
        b=[{'x':2,'y':3},{'x':3,'y':3},{'x':6,'y':4},{'x':2,'y':3},{'x':5,'y':5},{'x':5,'y':3},{'x':5,'y':3},]
        key=lambda b:(b['x'],b['y'])
        print(list(buha(b,key)))
    View Code
    找出列表中出现次数最多的元素
    '''
    找出列表中出现次数最多的元素
    
    '''
    from collections import Counter
    words=[1,2,33,45,657,4,56,33,22,66,33,22,22]
    words_count=Counter(words)
    #输出出现次数最多的前三
    top_three=words_count.most_common(3)
    print(words_count)
    print(top_three)
    View Code

    创建包含1到10平方的列表(使用列表推导式)

    '''
    创建包含1到10平方的列表
    '''
    squares=[]
    for x in range(1,11):
        squares.append(x**2)
    print(squares)
    #
    squares2=[x**2 for x in range(1,11)]
    print(squares2)
    View Code
    获取0到30,能被3整除的数平方的列表(列表推导式)
    '''
    获取0到30,能被3整除的数平方的列表
    '''
    sq=[i**2 for i in range(1,31) if i%3 is 0]
    print(sq)
    View Code

     切片

    '''
    切片
    '''
    items=[0,1,2,3,4,5,6]
    #切片
    print(items[2:4])
    #取出所有
    print(items[0:-1])
    #通过slice切片
    a=slice(2,4)
    print(items[a])
    #倒序
    print(items[-1:0:-1])
    View Code

     获取列表中所有数字

    '''
    获取列表中所有数字
    '''
    
    values=['1','2','3','4','-5','-','t']
    
    def is_int(val):
        try:
            x=int(val)
            return True
        except ValueError:
            return False
    #过滤并存到列表
    ivals=list(filter(is_int,values))
    print(ivals)
    View Code

     列表求和

    '''
    列表求和
    '''
    l2=[2,3,4]
    #列表内相加后再加10
    s=sum(l2,10)
    print(s)
    View Code

     列表转字符串

    s2=['RMB',50,128.88]
    print(','.join(str(x) for x in s2))
    View Code

     有序列表中搜索,添加元素

    '''
    有序列表中添加元素
    '''
    
    #二分法查找元素位置
    import bisect
    c=[1,2,4,6,7]
    r=bisect.bisect(c,4)
    print(r)
    #添加元素
    bisect.insort(c,5)
    print(c)
    View Code

    元祖

    元组操作

    '''
    元组操作
    '''
    tup1=(1,3,2)
    tup2=(4,5,6)
    #元组相加
    print(tup1+tup2)
    #内置操作
    #长度
    print(len(tup1))
    #最大元素
    print(max(tup1))
    #最小元素
    print(min(tup1))
    #删除
    del tup1
    print(tup1)
    View Code

     分解为变量

    #分解为变量
    a,b,c=tup1
    print(a,b,c)
    View Code

     元祖求和

    '''
    元祖求和
    '''
    t2=(1,2,4)
    p1=sum(t2,10)
    print(p1)
    View Code

     元祖转字符串

    #元祖转为字符串
    s=('RMB',50,128.88)
    #循环全部转为字符串,迭代拼接
    print(','.join(str(x) for x in s))
    View Code

    字典

    删除

    dict.pop("name")
    del dict["name"]
    View Code

    清空字典

    dict.clear()     # 清空字典
    del dict         # 删除字典
    View Code

    有序字典

    '''
    有序字典
    '''
    import collections
    dic=collections.OrderedDict()
    dic['k1']='v1'
    dic['k2']='v2'
    dic['k3']='v3'
    print(dic)
    View Code

     实现差集,交集

    a={'x':1,'y':2,'z':3}
    b={'x':11,'y':2,'w':10}
    
    #获取共有元素的键名
    print(a.keys()&b.keys())
    #取差集,返回a独有的键名
    print(a.keys()-b.keys())
    #返回差集
    print(a.items()-b.items())
    #使用推导式,进行
    c={key:a[key] for key in a.keys()-{'x','w'}}
    print(c)
    View Code

    使用itemgetter进行排序

    '''
    使用itemgetter排序
    '''
    from operator import itemgetter
    a=[1,2,3]
    b=itemgetter(1)
    
    print(b(a))
    b=itemgetter(1,0)
    print(b(a))
    
    
    rows=[
        {'fname':'AAA','lname':'zhang','uid':1001},
        {'fname':'CCC','lname':'zhou','uid':1002},
        {'fname':'DDD','lname':'wu','uid':1004},
        {'fname':'BBB','lname':'li','uid':1003},
    ]
    #按照fname排序
    rows_by_fname=sorted(rows,key=itemgetter('fname'))
    print(rows_by_fname)
    
    rows_by_uid=sorted(rows,key=itemgetter('uid'))
    print(rows_by_uid)
    #按照lname和fname排序
    rows_by_lfname=sorted(rows,key=itemgetter('lname','fname'))
    print(rows_by_lfname)
    #按照fname排序(使用匿名函数)
    rows_by_fname=sorted(rows,key=lambda r:r['fname'])
    print(rows_by_fname)
    #通过fname和lname组成的集合进行排序
    rows_by_lfname=sorted(rows,key=lambda r:(r['fname'],r['lname']))
    print(rows_by_lfname)
    #最小用户uid
    rows_min_uid=min(rows,key=itemgetter('uid'))
    print(rows_min_uid)
    #最大用户uid
    rows_max_uid=max(rows,key=itemgetter('uid'))
    print(rows_max_uid)
    View Code
    字典推导式应用
    '''
    字典推导式应用
    
    '''
    #简单读取
    mcase={'a':10,'b':34,'A':7,'z':3}
    for i in mcase:
        print("{%s:%s}"%(i,mcase[i]))
    
    mcase_frequency={
        k.lower():mcase.get(k.lower(),0)  +mcase.get(k.upper(),0)#第三步:拼接字典,大小写键明对应的键值相加
        for k in mcase.keys()#第一步:循环键名
        if k.lower() in ['a','b']#第二步:满足条件保留
    }
    print(mcase_frequency)
    
    #字典中key和val对换
    mcase1={'a':10,'b':34}
    mcase1_frequency={v:k   for k,v in mcase1.items() }
    print(mcase1_frequency)
    
    #从字典中提取子集
    prices={'asp.net':49.9,'python':69.9,'java':59.9,'c':45.9,'php':79.9}
    #读取价格大于50的
    p1={key:val  for key,val in prices.items() if val>50}
    print(p1)
    #选取子集
    tech_names={'python','java','c'}
    p2={key:val for key,val in prices.items() if key in tech_names}
    print(p2)
    
    p3=dict((key,val) for key,val in prices.items() if val>50)#使用推导式要比这种快两倍以上
    p4=dict((key,val) for key,val in prices.items() if key in tech_names)#使用推导式要比这种快两倍以上
    View Code

    排序

    '''
    字典排序
    '''
    
    price={'小米':899,'华为':1999,'三星':3999,'谷歌':4999,'酷派':599,'iphone':5000}
    #取出价格最低
    min_price=min(zip(price.values(),price.keys()))
    print(min_price)
    #取出价格最高
    max_price=max(zip(price.values(),price.keys()))
    print(max_price)
    #排序
    price_sorted=sorted(zip(price.values(),price.keys()))
    print(price_sorted)
    price_and_names=zip(price.values(),price.keys())
    print(price_and_names)
    
    print(min(price))
    print(max(price))
    print(max(price,key=lambda k:price[k]))
    View Code

     使用groupby分组

    '''
    
    使用groupby分组
    '''
    #对数据进行分组
    from itertools import groupby
    from operator import itemgetter
    things=[('2012-05-21',11),('2012-05-21',3),('2012-05-22',10),('2012-05-22',4),('2012-05-22',22),('2012-05-22',33)]
    #可迭代对象,分组条件
    for key,items in groupby(things,itemgetter(0)):#按照元祖序列中第一个元素进行分组
        print(key)
        #items为分组后的内容,可迭代对象
        for subitem in items:
            print(subitem)
        print('-'*20)
    
    #分组复杂数据
    rows=[
        {'address':'5412 N CLARK','data':'07/01/2018'},
        {'address':'5414 N CLARK','data':'07/03/2018'},
        {'address':'5422 N CLARK','data':'07/01/2018'},
        {'address':'5222 N CLARK','data':'07/03/2018'},
        {'address':'5224 N CLARK','data':'07/02/2018'}
    ]
    #按照data分组
    from operator import itemgetter
    from itertools import groupby
    rows.sort(key=itemgetter('data'))
    for data,items in groupby(rows,key=itemgetter('data')):
        print(data)
        for i in items:
            print(' ',i)
    
    
    from collections import defaultdict
    rows_by_date=defaultdict(list)
    
    for row in rows:
        rows_by_date[row['data']].append(row)
    print(rows_by_date)
    from collections import defaultdict
    #使用defaultdict,
    d = defaultdict(list)
    d['a'].append(1)
    d['a'].append(2)
    d['b'].append(4)
    print(d)
    d = defaultdict(set)
    d['a'].add(1)
    d['a'].add(2)
    d['b'].add(4)
    print(d)
    View Code
    将多个映射合并为单个映射
    '''
    将多个映射合并为单个映射
    '''
    a={'x':1,'z':3}
    b={'y':2,'z':4}
    from collections import ChainMap
    #字典合并,若是健名重复,使用第一个
    c=ChainMap(a,b)
    print(c)
    print(c['x'])#from a
    print(c['y'])#from b
    print(c['z'])# from a
    print(len(c))
    
    print(list(c.keys()))
    print(list(c.values()))
    #对合并后的修改将影响原来的
    c['z']=10
    c['w']=40
    
    del c['x']
    print(a)
    View Code

    集合

    后期补充。。。

  • 相关阅读:
    Vue-如何实现响应式
    Docker中mysql容器时区问题
    Django格式化日期时,抛出异常ValueError: embedded null byte
    前端报被CORS策略阻止,Django开启跨域解决
    DRF框架之认证、授权和登录
    Django之ALLOWED_HOSTS、LOGGING和多个子应用管理
    DRF框架生成接口文档
    DRF框架之自定义action
    DRF框架之视图集、Routers路由
    DRF框架之Concrete Generic Views
  • 原文地址:https://www.cnblogs.com/huay/p/11657525.html
Copyright © 2020-2023  润新知