Exercise
"""
问:执行完下面的代码后, l,m的内容分别是什么?
""" def func(m):
for k,v in m.items():
m[k+2] = v+2 m = {1: 2, 3: 4}
l = m # 浅拷贝
l[9] = 10
# func(l)
m[7] = 8 print("l:", l)
print("m:", m) # 解析
# 1. 在Python中遍历字典的时候不能对字典本身做涉及键(key)的操作
# 2. 深浅拷贝的理解 # 打印结果
# l: {1: 2, 3: 4, 9: 10, 7: 8}
# m: {1: 2, 3: 4, 9: 10, 7: 8}
试题1
"""
1. 问: 字符串格式化:%和format 有什么区别? Python新版本推荐使用format.
Python2.6 新加入的format语法支持.
3.6加入了一个 f-strings新特性
%和format的区别
http://www.cnblogs.com/liwenzhou/p/8570701.html
"""
# 当%格式化元组或者列表时很不方便,而用format就不用考虑是元组或者列表,如下
c = (250, 250) command1 = "二营长,向他开炮: 敌人坐标:%s" % (c, )
print(command1) #二营长,向他开炮: 敌人坐标:(250, 250) command2 = "二营长,向他开炮: 敌人坐标:{}".format(c)
print(command2) #二营长,向他开炮: 敌人坐标:(250, 250) # 3.6加入了一个 f-strings新特性,用着更方便
print(f"二营长,向他开炮: 敌人坐标:{c}") #二营长,向他开炮: 敌人坐标:(250, 250) # 常用form用法----通过对象属性
class Person(object):
def __init__(self, name, age):
self.name = name
self.age = age def __str__(self):
return "{self.name} is {self.age} years old.".format(self=self) p1 = Person("Alex", 9000)
print(p1) #Alex is 9000 years old. data = [11, 22]
print("{0} --- {0}".format(data)) #[11, 22] --- [11, 22] 默认替换元组
print("{0[0]} --- {0[0]}".format(data)) #11 --- 11
print("{0[0]} --- {0[1]}".format(data)) #11 --- 22 print("{:>10}".format(18)) # 18 生成一个十位的数字,右对齐
print("{:0>10}".format(18)) #0000000018 生成一个十位的数字,右对齐,不够的位用0填充
print("{:A>10}".format(18)) #AAAAAAAA18 生成一个十位的数字,右对齐,不够的位用A填充 print("".zfill(10)) #0000000018 把一个字符串转化成一个10位的字符串,左边用0填充 print("{:.4f}".format(3.1415926)) #3.1416 把3.1415926转化成一个带四位小数的浮点数 print("{:,}".format(1234567890)) #1,234,567,890 把1,234,567,890转换成千分位格式的数字
字符串格式化使form与%的区别
# 试题1
# 列表为可变对象,可变对象不能做关键字参数
# func运行时,会为li自动开辟一个内存空间
def foo(arg, li=[]):
li.append(arg)
return li list1 = foo(21)
list2 = foo(21, [1,])
list3 = foo(28) print(list1) #[21, 28]
print(list2) #[1, 21]
print(list3) #[21, 28] # 试题2
# li.append()没有返回值
def foo(arg, li=[]):
return li.append(arg) list1 = foo(21)
list2 = foo(21, [1,])
list3 = foo(28) print(list1) #None
print(list2) #None
print(list3) #None # 试题3
list5 = [11, 22, 33, 44, 55]
print(list5[10:]) #[] # 打乱列表的顺序
import random
random.shuffle(list5)
print(list5) #[22, 11, 33, 44, 55]
可变对象不能做关键字参数、append没有返回值
list1 = [11, [22, 3], [4, ], [55, 66], 8, [9, [7, [12, [34, [26]]]]]]
# 去除多余嵌套的列表,得到[11, 22, 3, 4, 55, 66, 8] # 小剥皮
# [11, [22, 3]]
# [11, [22, [3, 4]]
def func(x):
return [a for b in x for a in func(b)] if isinstance(x, list) else [x] def f(x):
ret = []
for b in x:
if isinstance(b, list):
for a in f(b):
ret.append(a)
else:
ret.append(b)
return ret list2 = [11, 22, [33, 44], [55, [66, 77]], [88, [99, [100, [200, [300]]]]]]
ret = f(list2)
print(ret) #[11, 22, 33, 44, 55, 66, 77, 88, 99, 100, 200, 300]
ret2 = func(list2)
print(ret2) #[11, 22, 33, 44, 55, 66, 77, 88, 99, 100, 200, 300] # def f(x):
# ret = []
# for b in x:
# if isinstance(b, list):
# for a in b:
# if isinstance(a,list):
# for c in a;
# ret.append(a)
# else:
# ret.append(b)
# return ret
递归剥皮嵌套的多层列表
Exercise的更多相关文章
- MIT 6.828 JOS学习笔记12 Exercise 1.9
Lab 1中Exercise 9的解答报告 Exercise 1.9: 判断一下操作系统内核是从哪条指令开始初始化它的堆栈空间的,以及这个堆栈坐落在内存的哪个地方?内核是如何给它的堆栈保留一块内存空间 ...
- MIT 6.828 JOS学习笔记13 Exercise 1.10
Lab 1 Exercise 10 为了能够更好的了解在x86上的C程序调用过程的细节,我们首先找到在obj/kern/kern.asm中test_backtrace子程序的地址, 设置断点,并且探讨 ...
- MIT 6.828 JOS学习笔记11 Exercise 1.8
Exercise 1.8 我们丢弃了一小部分代码---即当我们在printf中指定输出"%o"格式的字符串,即八进制格式的代码.尝试去完成这部分程序. 解答: 在这个练 ...
- MIT 6.828 JOS学习笔记8. Exercise 1.4
Lab 1 Exercise 4 阅读关于C语言的指针部分的知识.最好的参考书自然是"The C Programming Language". 阅读5.1到5.5节.然后下载poi ...
- MIT 6.828 JOS学习笔记9. Exercise 1.5
Lab 1 Exercise 5 再一次追踪一下boot loader的一开始的几句指令,找到第一条满足如下条件的指令处: 当我修改了boot loader的链接地址,这个指令就会出现错误. 找到这样 ...
- MIT 6.828 JOS学习笔记5. Exercise 1.3
Lab 1 Exercise 3 设置一个断点在地址0x7c00处,这是boot sector被加载的位置.然后让程序继续运行直到这个断点.跟踪/boot/boot.S文件的每一条指令,同时使用boo ...
- MIT 6.828 JOS学习笔记3. Exercise 1.2
这篇博文是对Lab 1中的Exercise 2的解答~ Lab 1 Exercise 2: 使用GDB的'si'命令,去追踪ROM BIOS几条指令,并且试图去猜测,它是在做什么.但是不需要把每个细节 ...
- Stanford coursera Andrew Ng 机器学习课程编程作业(Exercise 2)及总结
Exercise 1:Linear Regression---实现一个线性回归 关于如何实现一个线性回归,请参考:http://www.cnblogs.com/hapjin/p/6079012.htm ...
- stanford coursera 机器学习编程作业 exercise 3(逻辑回归实现多分类问题)
本作业使用逻辑回归(logistic regression)和神经网络(neural networks)识别手写的阿拉伯数字(0-9) 关于逻辑回归的一个编程练习,可参考:http://www.cnb ...
- Stanford coursera Andrew Ng 机器学习课程编程作业(Exercise 1)
Exercise 1:Linear Regression---实现一个线性回归 在本次练习中,需要实现一个单变量的线性回归.假设有一组历史数据<城市人口,开店利润>,现需要预测在哪个城市中 ...
随机推荐
- JavaScript实现哈希表
JavaScript实现哈希表 一.哈希表简介 1.1.认识哈希表 哈希表通常是基于数组实现的,但是相对于数组,它存在更多优势: 哈希表可以提供非常快速的插入-删除-查找操作: 无论多少数据,插入和删 ...
- SpringCloud入门(八): Zuul 过滤器详解
Zuul 过滤器 zuul 有四种过滤器类型,分别是: 1.Pre:过滤器在请求被路由之前调用.我们可利用这种过滤器实现身份验证.在集群中选择请求的微服务.记录调试信息等: 2.Routing:过滤器 ...
- UVA11300 Spreading the Wealth 数学
前方数学警告 题目链接:https://onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=25&am ...
- 除了chrome、Firefox之外其他浏览器全都连不上网
在调试jsp时,总是会遇到eclipse打开jsp网页失败,没有网络,浏览器也除了chrome.Firefox之外其他浏览器全都连不上网,这里我也不清楚是什么问题,但是解决方法是: 打开Interne ...
- findbugs过滤R.java文件
在第一次使用findbugs时检查出100多个Bad pratice,仔细一看原来全是R文件里面的类名首字母没有大写导致的. 于是只有自己在findbugs设置界面中添加过滤条件来忽略掉R文件. 在F ...
- Thinkphp getLastSql函数用法
如何判断一个更新操作是否成功: $Model = D('Blog'); $data['id'] = 10; $data['name'] = 'update name'; $result = $Mode ...
- Java 给 PowerPoint 文档添加背景颜色和背景图片
在制作Powerpoint文档时,背景是非常重要的,统一的背景能让Powerpoint 演示文稿看起来更加干净美观.本文将详细讲述如何在Java应用程序中使用免费的Free Spire.Present ...
- Js异步机制的实现
Js异步机制 JavaScript是一门单线程语言,所谓单线程,就是指一次只能完成一件任务,如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推.这种模式的好处是实现起来比较简单 ...
- 15-场景中用到的资源监视器(perfmon metrics collector)
JMeter 无法提取除 Tomcat 之外的其他服务器的指标,因此PerfMon Metrics Collector可用来获取性能数据. PerfMon Metrics Collector使用的是S ...
- 这本最适合夯实基础的经典 Java 书籍,可能80% 的 Java 程序员没有认真看过!
公众号[程序员书单]出品,转载请注明出处 作者:黄小斜 今天要给大家带来的一本书,是大名鼎鼎的head first系列丛书的一本<head first Java>相信很多学习Java的朋友 ...