• Python的学习之旅———三元表达式 列表解析 序列化


    三元表达式

    name=input('姓名>>: ')

    res='SB' if name == 'alex' else 'NB'

    print(res)

    列表解析

     1 egg_list=[]
     2 for i in range(10):
     3     if i >= 3:
     4         res='egg%s' %i
     5         egg_list.append(res)
     6 
     7 print(egg_list)
     8 
     9 
    10 l=['egg%s' %i for i in range(10) if i >= 3]
    11 print(l)
    12 
    13 g=('egg%s' %i for i in range(10) if i >= 3)
    14 print(next(g))

    l是鸡蛋筐

    g是一个鸡蛋 next一次就产生一个


    list(g)                   #因g可迭代,因而可以转成列表

    ['鸡蛋1', '鸡蛋2', '鸡蛋3', '鸡蛋4',] 

     1 l=['egg%s'%i for i in range(1,10) if i>3]
     2 print(l)
     3 l=('egg%s'%i for i in range(1,10) if i>3)
     4 print(next(l))
     5 print(list(l))
     6 
     7 
     8 ['egg4', 'egg5', 'egg6', 'egg7', 'egg8', 'egg9']
     9 egg4
    10 ['egg5', 'egg6', 'egg7', 'egg8', 'egg9']

    对于生成器来讲,next一次里面的元素就少一个.

    我们使用列表推导式时大多时候是为了减少代码行数, 很少是为了提高性能的。 还有一个目的就是为了使得代码更加简单而又实用,

    所以如果有更简洁的写法的话, 那就果断抛弃列表推导式吧!

    序列化

    什么是序列化?

    我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等等.

    为什么要序列化?

    1:持久保存状态

    2:跨平台数据交互

    序列化 dumps() 和反序列化loads().

    序列化的表示是双引号"" 任何数据都要用双引号引用起来.

    当前序列化只能在文件的一行.

    于dump和load可以直接加 对象和文件句柄

    user={'name':'egon','pwd':'123','age':18}
    json.dump(user,open('db1.json','w',encoding='utf-8'))
    user={'name':'egon','pwd':'123','age':18}
    json.load(open('db1.json','w',encoding='utf-8'))


    需要注意的是:

    import json
    dct="{'1':111}"#json 不认单引号
    dct=str({"1":111})#报错,因为生成的数据还是单引号:{'one': 1}
    
    dct='{"1":"111"}'
    print(json.loads(dct))
    无论数据是怎样创建的,只要满足json格式,就可以json.loads出来,不一定非要dumps的数据才能loads

     dump和load的对象都是文件句柄  dumps和loads的对象是文件内容



  • 相关阅读:
    Rational Rose 2003 逆向工程转换C++ / VC++ 6.0源代码成UML类图
    用VC实现特定编辑框上对回车键响应
    22.职责链模式
    21.策略模式
    20.状态模式
    19.解释器模式
    18.备忘录模式
    17.中介者模式
    16.观察者模式
    15.迭代器模式
  • 原文地址:https://www.cnblogs.com/surehunter/p/7651185.html
Copyright © 2020-2023  润新知