"""
问:执行完下面的代码后, 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 Future模式

    多线程不管是extends Thread 还是 implements Runnable 都是要重写run 方法来实现,这两种方式子线程都没有返回值. 如果要实现主线程对子线程的监听,让子线程有返回值, ...

  2. ES6全面讲解

    写在之前.讲解了比较常用的ES6知识点,可以快速的入门.有两个比较复杂的知识点(promise,generator)则是留在了其他文章中,在里面详细讲解. 介绍 1.历史 ​ 1.ECMAScript ...

  3. iOS提审笔记

    查看苹果各大系统的服务状态:中国区服务:https://www.apple.com/cn/support/systemstatus/美国区服务:https://developer.apple.com/ ...

  4. 解决ASP.NET MVC返回的JsonResult 中 日期类型数据格式问题,和返回的属性名称转为“驼峰命名法”和循环引用问题

    DateTime类型数据格式问题 问题 在使用ASP.NET MVC 在写项目的时候发现,返回给前端的JSON数据,日期类型是 Date(121454578784541) 的格式,需要前端来转换一下才 ...

  5. Ruby学习计划-(0)前言

      前言   接触过的编程语言现在来说有C.C++.Java.Object-C.Swift.这几门语言中最熟悉的就是oc了,毕竟靠他吃饭,对于其他几门语言都是初入门径而已,由于本身一直从事iPhone ...

  6. markdown多张图片并排显示

    在markdown中,目前,让图片像这样并排居中的方式主要是两种: ![](https://img2018.cnblogs.com/blog/1735896/202001/1735896-202001 ...

  7. css3之 景深

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  8. 【网络安全】——客户端安全(浏览器安全、XSS、CSRF、Clickjacking)

    ​ 近在学习网络安全相关的知识,于是先从业内一本系统讲Web安全的书<白帽子讲Web安全>系统学习Web安全的相关知识.在此整理书中的知识层次,不求详尽,只求自己对整个Web安全梗概有所了 ...

  9. Mysql数据库下载以及安装(至安装成功cmd可访问)

    主要整理了一下Mysql安装的过程 安装的具体步骤见: https://blog.csdn.net/weixin_43465312/article/details/89897580?ops_reque ...

  10. 关于json语句的相关用法

    json语句: JSON 值可以是: 数字(整数或浮点数)字符串(在双引号中)逻辑值(true 或 false)数组(在中括号中)对象(在大括号中)null 对于json的的对象数组:var site ...