"""
问:执行完下面的代码后, 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的更多相关文章

  1. MIT 6.828 JOS学习笔记12 Exercise 1.9

    Lab 1中Exercise 9的解答报告 Exercise 1.9: 判断一下操作系统内核是从哪条指令开始初始化它的堆栈空间的,以及这个堆栈坐落在内存的哪个地方?内核是如何给它的堆栈保留一块内存空间 ...

  2. MIT 6.828 JOS学习笔记13 Exercise 1.10

    Lab 1 Exercise 10 为了能够更好的了解在x86上的C程序调用过程的细节,我们首先找到在obj/kern/kern.asm中test_backtrace子程序的地址, 设置断点,并且探讨 ...

  3. MIT 6.828 JOS学习笔记11 Exercise 1.8

    Exercise 1.8       我们丢弃了一小部分代码---即当我们在printf中指定输出"%o"格式的字符串,即八进制格式的代码.尝试去完成这部分程序. 解答: 在这个练 ...

  4. MIT 6.828 JOS学习笔记8. Exercise 1.4

    Lab 1 Exercise 4 阅读关于C语言的指针部分的知识.最好的参考书自然是"The C Programming Language". 阅读5.1到5.5节.然后下载poi ...

  5. MIT 6.828 JOS学习笔记9. Exercise 1.5

    Lab 1 Exercise 5 再一次追踪一下boot loader的一开始的几句指令,找到第一条满足如下条件的指令处: 当我修改了boot loader的链接地址,这个指令就会出现错误. 找到这样 ...

  6. MIT 6.828 JOS学习笔记5. Exercise 1.3

    Lab 1 Exercise 3 设置一个断点在地址0x7c00处,这是boot sector被加载的位置.然后让程序继续运行直到这个断点.跟踪/boot/boot.S文件的每一条指令,同时使用boo ...

  7. MIT 6.828 JOS学习笔记3. Exercise 1.2

    这篇博文是对Lab 1中的Exercise 2的解答~ Lab 1 Exercise 2: 使用GDB的'si'命令,去追踪ROM BIOS几条指令,并且试图去猜测,它是在做什么.但是不需要把每个细节 ...

  8. Stanford coursera Andrew Ng 机器学习课程编程作业(Exercise 2)及总结

    Exercise 1:Linear Regression---实现一个线性回归 关于如何实现一个线性回归,请参考:http://www.cnblogs.com/hapjin/p/6079012.htm ...

  9. stanford coursera 机器学习编程作业 exercise 3(逻辑回归实现多分类问题)

    本作业使用逻辑回归(logistic regression)和神经网络(neural networks)识别手写的阿拉伯数字(0-9) 关于逻辑回归的一个编程练习,可参考:http://www.cnb ...

  10. Stanford coursera Andrew Ng 机器学习课程编程作业(Exercise 1)

    Exercise 1:Linear Regression---实现一个线性回归 在本次练习中,需要实现一个单变量的线性回归.假设有一组历史数据<城市人口,开店利润>,现需要预测在哪个城市中 ...

随机推荐

  1. Thread -- Volatile

    1,可见性也就是说一旦某个线程修改了该被volatile修饰的变量,它会保证修改的值会立即被更新到主存,当有其他线程需要读取时,可以立即获取修改之后的值. 在Java中为了加快程序的运行效率,对一些变 ...

  2. 树莓派 zeroWH 使用笔记

    更新raspbian    apt-get update    apt-get upgrade 删除python2    sudo rm /usr/bin/python安装python3    sud ...

  3. 在MVC三层项目中如何使用Log4Net

    --前期准备(添加到队列中) 0-1在新建后的MVC项目中的[Models]中添加一个类,用于处理异常信息,并继承自HandleErrorAttribute public class MyExcept ...

  4. Vue 【前端面试题】

    前言 看看面试题,只是为了查漏补缺,看看自己那些方面还不懂.切记不要以为背了面试题,就万事大吉了,最好是理解背后的原理,这样面试的时候才能侃侃而谈.不然,稍微有水平的面试官一看就能看出,是否有真才实学 ...

  5. vuex知识要点梳理

    该内容为个人总结,请勿喷. 欢迎各位大神前来指点.

  6. warning: directory not found for option“XXXXXX” 解决方案

    从项目中删除了某个目录.文件以后,编译出现警告信息:   ld: warning: directory not found for option"XXXXXX" 很奇怪,为什么已经 ...

  7. ANTLR随笔(三)

    ANTLR基本语法 前面已经简单介绍了ANTLR以及怎么安装和测试. 同学们应该大概清楚ANTLR的使用场景,但是对于关键步骤,怎么编写一个语法文件并没有详细介绍,这篇笔记主要详细讲解一下ANTLR的 ...

  8. 《Java基础复习》—常识与入门

    突然发现自己Java基础的底子不到位,复习! 所记知识会发布在CSDN与博客网站jirath.cn <Java基础复习>-常识与入门 一.Java语言的知识体系图 分为三部分 编程语言核心 ...

  9. JDK12不包含JAXB-API

    ##用JDK12环境下 做EUREKA的的时候 报错如下 java.lang.TypeNotPresentException: Type javax.xml.bind.JAXBContext not ...

  10. webpack篇

    2017年09月28日 14:08:18 阅读数:4770 https://juejin.im/post/59cb6307f265da064e1f65b9 还是以前一样,有些概念面试可能会考,我都用* ...