"""
问:执行完下面的代码后, 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. 面试刷题30:SpringBean的生命周期?

    spring是Java软件开发的事实标准. 我是李福春,我在准备面试,今天的问题是:springBean的生命周期是怎样的? 答:spring最基础的能力是IOC(依赖注入),AOP(面向切面编程), ...

  2. Codeforces 1329C - Drazil Likes Heap(堆+贪心)

    题目链接 题意 给出一个高度为 h 的大根堆, 要求弹出其中若干个数后高度变为 g, 并且前后大根堆都是满二叉树. 问新的大根堆所有数之和的最小值, 并要给出一种弹出数的操作序列(节点序号). h, ...

  3. 《java编程思想》 初始化与清理

    1.初始化与清理的重要性: 1.许多C程序的错误都源于程序员忘记初始化变量,特别是使用程序库时,如果不知道如何初始化库的构件更容易出错 2.当使用完一个元素时,这个元素就不会有什么影响了,所以很容易就 ...

  4. 通过pycharm使用git和github的步骤(图文详解)

    一.在Pycharm工具中配置集成Git和GitHub.1.集成Git. 打开Pycharm,  点击File-->Settins-->Version Control-->Git 然 ...

  5. 人生靠反省,Java靠泛型

    昨天有同事问 UserService.XxxService 都会调用 Dao 的 insert.update ... ...,这些重复的代码,有没有办法变得灵活一些? 巧了,和咱们分享的主题刚好碰上, ...

  6. Y分形的平面微带天线生成过程

    Y分形的平面微带天线生成过程 本文介绍了使用Altium Designer脚本程序生成Y型天线的过程,在窗体中线宽.迭代次数,边框长度可以直接设置. Y分形天线用户界面由一个窗体.1个TImage控件 ...

  7. For,while,case,shell循环结构

                                                                For,while,case,shell循环结构 案例1:使用for循环结构 案 ...

  8. GIT本地安装及汉化

    GIT本地安装及汉化过程 1.下载地址: 链接:https://pan.baidu.com/s/1TMxxngZy4Y1De5eC1kSTMg 提取码:e593 2.下载完成之后如下图所示3个文件: ...

  9. Tcl编程第四天,流程控制语句

    1. if {} { } elseif {} { } else { } 注意: 1.关键字 if elseif else 和大括号之间应该留有间距的.如果紧紧挨着会报错. 2.表条件的判断括号为大括号 ...

  10. Array(数组)对象-->数组遍历

    1.数组的遍历: 方法1:使用for循环语句 /*定义数组*/ var arr=[1,2,3,4,5]; /*遍历*/ for (var i = 0;i<arr.length;i++){ con ...