"""
问:执行完下面的代码后, 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. Mysql性能优化:为什么你的count(*)这么慢?

    导读 在开发中一定会用到统计一张表的行数,比如一个交易系统,老板会让你每天生成一个报表,这些统计信息少不了 sql 中的count函数. 但是随着记录越来越多,查询的速度会越来越慢,为什么会这样呢?M ...

  2. Windows下命令行MySQL安装

    通过zip压缩包文件直接安装 1.下载链接 https://dev.mysql.com/downloads/mysql/ 下载好后解压移动文件夹 2.配环境变量 path路径追加 3.创建初始化文件 ...

  3. coding++: java把一个整数拆分为单个值

    方式一: int num = 100; int[] ary = new int[(num+"").length()]; for(int i = ary.length-1;i> ...

  4. coding++:高并发解决方案限流技术--计数器--demo

    1.它是限流算法中最简单最容易的一种算法 计数器实现限流 每分钟只允许10个请求 第一个请求进去的时间为startTime,在startTime + 60s内只允许10个请求 当60s内超过十个请求后 ...

  5. coding++:js实现基于Base64的编码及解码

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. spring5之容器始末源码赏析 (一)总览

    首先,本系列并不是以介绍spring5 的新特性为主,之所以以spring5为标题,是因为即将赏析的源码来自最新的spring版本.虽说是spring最新版本,但是容器的整个生命周期与之前版本相比,并 ...

  7. logstash用jdbc插件将数据库内容导入elasticsearch时间字段相差5小时

    logstash将mysql的数据导入elasticsearch之后发现时间字段的相差5个小时 解决办法: 在数据库连接配置后面加上?serverTimezone=UCT这个就OK了 logstash ...

  8. Django ORM查询结果是model对象

    xxx.object.get/filter()要查询出的结果为model对象,并不是需要的数据,如果使用需要model_to_dict()函数.

  9. STL之vector常用函数笔记

    STL之vector常用函数笔记 学会一些常用的vector就足够去刷acm的题了 ps:for(auto x:b) cout<<x<<" ";是基于范围的 ...

  10. vulnhub~incllusiveness

    这个机子相对简单一点,但是也是从中发现了自己不少问题 技能一:  nmap 扫描发现了21,22 ,80三个端口,并且ftp服务允许匿名登录,在pub目录下面有writeable权限,这就好办了.我以 ...