博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
复习2
阅读量:4699 次
发布时间:2019-06-09

本文共 2260 字,大约阅读时间需要 7 分钟。

以下两段代码运行之后结果是否相同?为什么?

第一段

l=[] for i in range(10):     l.append({
'num':i}) print(l)  

第二段

l=[] a={
'num':0} for i in range(10):     a['num']=i     l.append(a) print(l)
答案首先分析第一段,{
'num':i}的循环里面,每一次循环都产生一个新的字典类型,所以这个比较简单结果是[{
'num': 0}, {
'num': 1}, {
'num': 2}, {
'num': 3}, {
'num': 4}, {
'num': 5}, {
'num': 6}, {
'num': 7}, {
'num': 8}, {
'num': 9}]第二段情况就有些特殊了,a={
'num':0}表示把映射类型字典的引用给了a,循环a['num']=i的时候,a的引用地址不变,所以取了最后一次循环的值。[{
'num': 9}, {
'num': 9}, {
'num': 9}, {
'num': 9}, {
'num': 9}, {
'num': 9}, {
'num': 9},{
'num': 9}, {
'num': 9}, {
'num': 9}]

 

 
请写出下列代码的输出的内容:   
def test1():   for i in range(2):       print('+'+str(i))       yield str(i)for a in test1():       print('-'+a)for a in list(test1()):      print('-'+a)
 
答案首先我们分析test1()打印的是什么,
可以看到是生成器一枚。第一个for循环+0 -0 +1 -1第二个for循环,首先我们看list(test1())就知道了,首先需要执行完生成器里的循环获取然后转出list即[0,1]。然后在循环这个list所以结果是。+0 +1 -0 -1

 

 

写出下面代码的输出内容:

 
for n in filter(lambda n:n%5,[n for n in range(100) if n%5==0]):     print(n) else:    print('12345')
 

答案

 

首先我们知道filter的用法

filter(function, iterable)
其中还
function -- 判断函数。
iterable -- 可迭代对象。
返回 True 或 False
但是这个题比较坑 n%5和n%5==0的区别 ,n%5是n除以5求其余数。n%5==0是n的5整除。
lambda n:n%5这个返回的是个数字而不是一个布尔类型不符合filter的要求,所以输出12345。
要达到筛选效果我们可以这样改.

 
for n in filter(lambda n:n%5==0,[n for n in range(100) if n%5==0]):     print(n)
 

但是如果我们这样改呢,

 
for i in filter(lambda n:n%5==0,[n for n in range(100) if n%5==0]):     print(n)
12345

结果就比较有意思了,大家可以考虑下为什么。

 

 

 

 

请实现下面对象的序列号和反序列化。

class User():      name='user1'      age=30

答案

我们把变量从内存中变成可存储或传输的过程称之为序列化

反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化
另外我们使用的模块是pickle

1、只能在python中使用,只支持python的基本数据类型。
2、可以处理复杂的序列化语法。(例如自定义的类的方法,游戏的存档等)
3、序列化的时候,只是序列化了整个序列对象,而不是内存地址。

pickle.dumps()方法把任意对象序列化成一个bytes.所以我们首先需要创建一个对象即u=User()

然后我们再把这个对象序列化。即

bytes=pickle.dumps(u)

然后是反序列化:

用pickle.loads()方法反序列化出对象.即

object=pickle.loads(bytes)
 

请写出下面代码输出的内存:

a=zip(('a','b','c'),(1,2,3,4))

print(dict(a))

答案

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

zip 方法在 Python 2 和 Python 3 中的不同:在 Python 3.x 中为了减少内存,zip() 返回的是一个对象。
所以这里按照最短的元素组成的字典输出是。

{
'a':1,'b':2,'c':3}
    

转载于:https://www.cnblogs.com/baili-luoyun/p/10973772.html

你可能感兴趣的文章
Adobe® Reader®.插件开发
查看>>
【POJ 3461】Oulipo
查看>>
Alpha 冲刺 (5/10)
查看>>
使用Siege进行WEB压力测试
查看>>
斑马为什么有条纹?
查看>>
android多层树形结构列表学习笔记
查看>>
Android_去掉EditText控件周围橙色高亮区域
查看>>
《构建之法》第一、二、十六章阅读笔记
查看>>
arrow:让Python的日期与时间变的更好
查看>>
(转)Excel的 OleDb 连接串的格式(连接Excel 2003-2013)
查看>>
Java并发编程
查看>>
Git Stash用法
查看>>
sql server 2008学习8 sql server存储和索引结构
查看>>
Jquery radio选中
查看>>
memcached 细究(三)
查看>>
RSA System.Security.Cryptography.CryptographicException
查看>>
webservice整合spring cxf
查看>>
[解题报告] 100 - The 3n + 1 problem
查看>>
Entity Framework 学习高级篇1—改善EF代码的方法(上)
查看>>
Mybatis逆向工程配置文件详细介绍(转)
查看>>