热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

从零开始掌握Python编程:第1112课作业解析

在第1112课的作业解析中,我们回顾了第11章和第12章的核心知识点。第11章重点介绍了列表操作的相关函数,如`remove()`、`del`和`pop()`,以及切片操作。例如,对于列表`member=[1,2,3,4,5]`,可以通过`member.remove(1)`来移除列表中的元素1。此外,还详细解析了这些函数在实际编程中的应用和注意事项,帮助初学者更好地理解和掌握Python编程的基础知识。

==========CH11-12 homework==========

CH11 知识点回顾

主要函数:remove() del pop() slice

member = [1, 2, 3, 4, 5]
member.remove(2) # 这里移除是考虑移除的对象,不是指针的位置,但是不是移除所有的相同值,移除最前面的
member.pop() # 跟数据结构的栈一样,从线上往下拿。不指出位置,就先考虑矩阵(列表的)最后一位.
member.pop() # .pop(2) 是指'3', 位置为2, .remove(2) 是指值'2',位置在1
del member # 删除member
del member[0] # 删除member第一个位置的值#slice
member[1:3] = [2,3,4] # 从位置1到位置3(不包含位置3)
member[1:] = [2,3,4,5]
member[:4] = [1,2,3,4]
member[:] =[1,2,3,4,5]

CH12 知识点回顾

列表使用。dir(list)

list1 = [123,231]
123 in list1
True
list1.count()
list1.index(231)
list1.reverse()

0 注意,这道题跟上节课的那道题有点儿不同,回答完请上机实验或参考答案。

1. >>> old = [1, 2, 3, 4, 5]
2. >>> new = old
3. >>> old = [6]
4. >>> print(new)

如果不上机操作,你觉得会打印什么内容?

Answer:[1, 2, 3, 4, 5]

注意下面这个测试,复制尽量选择slice

这里主要说明分片“拷贝”,如果用slice是用的直接拷贝,相当于开辟新内存
而直接复制则是指向原始内存。但是,如果你修改了B,A也是不会变的。这里仅处理位置变换
>>> A
[2, 2, 3, 3, 4, 4, 5, 5]
>>> C = B[:]
>>> C
[2, 2, 3, 3, 4, 4, 5, 5]
>>> B.sort(reverse = True)
>>> A
[5, 5, 4, 4, 3, 3, 2, 2]
>>> B
[5, 5, 4, 4, 3, 3, 2, 2]
>>> C
[2, 2, 3, 3, 4, 4, 5, 5]

1 请问如何将下边这个列表的’小甲鱼’修改为’小鱿鱼’?

list1 = [1, [1, 2, ['小甲鱼']], 3, 5, 8, 13, 18]

Answer: list1[1][2][0] = ‘小鱿鱼’

2 要对一个列表进行顺序排序,请问使用什么方法?

Answer: 使用内置函数sort(), A.sort()

3 要对一个列表进行逆序排序,请问使用什么方法?

Answer: 使用内置函数sort(), A.sort(reverse = True)

4 列表还有两个内置方法没给大家介绍,不过聪明的你应该可以自己摸索使用的门道吧:copy() 和 clear()

Answer: 先描述想法,copy()美其名曰“复制”,应该可以控制复制的位置和区间;clear()应该和remove()类似
Test:

>>>A = [1, 2, 3, 4, 5, 6]
>>>B = A.copy()
B = [1, 2, 3, 4, 5]
>>>A.sort(reverse = True)
B = [1, 2, 3, 4, 5, 6]
A = [6, 5, 4, 3, 2, 1]
>>>C = A.copy(1)TypeError: copy() takes no arguments (1 given)
>>>C = A.copy()
>>>D = C.clear()
>>>D
[]
>>>D = C.clear(1)TypeError: clear() takes no arguments (1 given)

总结:clear()直接清除列表,但内存空间还在,你可以看到D = [];
copy直接复制列表,而且不会由原来的引起的改变影响,跟切片一样。

5 你有听说过列表推导式或列表解析吗?没听过?!没关系,我们现场来学习一下吧,看表达式:

>>> [ i*i for i in range(10) ]
你觉得会打印什么内容?
1.>>> [i*i for i in range(10)]
2.[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
居然分别打印了09各个数的平方,然后还放在列表里边了有木有?!
列表推导式(List comprehensions)也叫列表解析,灵感取自函数式编程语言 Haskell。
Ta 是一个非常有用和灵活的工具,可以用来动态的创建列表,语法如:
[有关A的表达式 for A in B]例如
1. >>> list1 = [x**2 for x in range(10)]
2. >>> list1
3. [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

相当于
1. list1 = []
2. for x in range(10):
3. list1.append(x**2)
问题:请先在 IDLE 中获得下边列表的结果,并按照上方例子把列表推导式还原出来。
1. >>> list1 = [(x, y) for x in range(10) for y in range(10) if x%2==0 if y%2!=0]

IDLE TEST

>>> list1 = [(x, y) for x in range(10) for y in range(10) if x%2==0 if y%2!=0]
>>> list1
[(0, 1), (0, 3), (0, 5), (0, 7), (0, 9), (2, 1), (2, 3), (2, 5), (2, 7), (2, 9),
(4, 1), (4, 3), (4, 5), (4, 7), (4, 9), (6, 1), (6, 3), (6, 5), (6, 7), (6, 9),
(8, 1), (8, 3), (8, 5), (8, 7), (8, 9)]



code

list1 = []
for x in range(10):for y in range(10):if x % 2 == 0 and y % 2 != 0:list1.append( (x, y) )

6 活学活用:请使用列表推导式补充被小甲鱼不小心涂掉的部分

list3 = [name + ':' + slogan[2:] for slogan in list1 for name in list2 if slogan[0] == name[0]]

7 请写下本节课学到的内容

  1. important: slice, copy, clear. A[:] A.copy() A.clear()
  2. 列表推导式:list1 = [(x, y) for x in range(10) for y in range(10) if x%2==0 if y%2!=0]


推荐阅读
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 社交网络中的级联行为 ... [详细]
  • 本文详细介绍了Python中的可迭代对象、迭代器和生成器的概念及实现方式。通过实例代码展示如何创建和使用这些对象,帮助读者更好地理解和掌握其原理。 ... [详细]
  • Python 内存管理机制详解
    本文深入探讨了Python的内存管理机制,涵盖了垃圾回收、引用计数和内存池机制。通过具体示例和专业解释,帮助读者理解Python如何高效地管理和释放内存资源。 ... [详细]
  • 本文介绍了SVD(奇异值分解)和QR分解的基本原理及其在Python中的实现方法。通过具体代码示例,展示了如何使用这两种矩阵分解技术处理图像数据和计算特征值。 ... [详细]
  • Java每日一题:876. 链表的中间节点解析
    本文详细介绍了LeetCode上编号为876的题目——链表的中间节点,包括问题描述、解决方案和代码实现。 ... [详细]
  • 本文介绍如何使用 Android 的 Canvas 和 View 组件创建一个简单的绘图板应用程序,支持触摸绘画和保存图片功能。 ... [详细]
  • 利用决策树预测NBA比赛胜负的Python数据挖掘实践
    本文通过使用2013-14赛季NBA赛程与结果数据集以及2013年NBA排名数据,结合《Python数据挖掘入门与实践》一书中的方法,展示如何应用决策树算法进行比赛胜负预测。我们将详细讲解数据预处理、特征工程及模型评估等关键步骤。 ... [详细]
  • 本文详细探讨了JavaScript中的作用域链和闭包机制,解释了它们的工作原理及其在实际编程中的应用。通过具体的代码示例,帮助读者更好地理解和掌握这些概念。 ... [详细]
  • 本文介绍了如何在多线程环境中实现异步任务的事务控制,确保任务执行的一致性和可靠性。通过使用计数器和异常标记字段,系统能够准确判断所有异步线程的执行结果,并根据结果决定是否回滚或提交事务。 ... [详细]
  • Python实现斐波那契数列的方法与优化
    本文详细介绍了如何在Python中编写斐波那契数列,并探讨了不同的实现方法及其性能优化。通过递归、迭代和公式法,读者可以了解每种方法的优缺点,并选择最适合自己的实现方式。 ... [详细]
  • 二维几何变换矩阵解析
    本文详细介绍了二维平面上的三种常见几何变换:平移、缩放和旋转。通过引入齐次坐标系,使得这些变换可以通过统一的矩阵乘法实现,从而简化了计算过程。文中不仅提供了理论推导,还附有Python代码示例,帮助读者更好地理解这些概念。 ... [详细]
  • 2018-2019学年第六周《Java数据结构与算法》学习总结
    本文总结了2018-2019学年第六周在《Java数据结构与算法》课程中的学习内容,重点介绍了非线性数据结构——树的相关知识及其应用。 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • C/C++ 指针操作解析:双向链表中元素的取消链接
    本文详细解释了在C语言中使用指针进行双向链表元素取消链接的操作,探讨了`next->prev`和`prev`之间的关系,并提供了代码示例和可视化辅助理解。 ... [详细]
author-avatar
不雅cf居
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有