[深度学习入门]Python序列、切片、元组、字典及集合相关问题(一)

简介: 笔记

一、Python序列


 Python中常见的序列结构有列表、元组、字符串、字典、集合以及range等对象,也支持很多类似的操作。

 列表、元组、字符串支持双向索引,第一个元素下标为0,第二个元素下标为1,以此类推;最后一个元素下标为-1,倒数第二个元素下标为-2,以此类推。

1.png

列表是Python中内置有序可变序列,列表的所有元素放在一对中括号”[]”中,并使用逗号分隔开。

 当列表元素增加或删除时,列表对象自动进行扩展或收缩内存,保证元素之间没有缝隙。

 在Python中,一个列表中的数据类型可以各不相同,可以同时分别为整数、实数、字符串等基本类型,甚至是列表、元组、字典、集合以及其他自定义类型的对象。

2.png

列表常用方法:

3.png

1、列表创建与删除

  使用“=”直接将一个列表赋值给变量即可创建列表对象

4.png

也可以使用list()函数将元组、range对象、字符串或其他类型的可迭代对象类型的数据转换为列表

5.png

range对象本身不是列表,也不是对象可用list()函数或其他方法将其转换为列表

  当不再使用时,使用del命令删除整个对象如果列表对象所指向的值不再有其他对象指向,Python将同时删除该值

6.png

2、列表元素的增加

(1)可以使用“+”运算符将元素添加到列表中。

image.png

严格意义上来讲,这并不是真的为列表添加元素,而是创建一个新的列表,并将原列表中的元素和新元素依次复制到新列表的内存空间。由于涉及大量元素的复制,该操作速度较慢,在涉及大量元素添加时不建议使用该方法。


(2)使用列表对象的append()方法,原地修改列表,是真正意义上的在列表尾部添加元素,速度较快。


image.png

所谓“原地”,是指不改变列表在内存中的首地址。

 列表中包含的是元素值的引用,而不是直接包含元素值。如果是直接修改序列变量的值,则与Python普通变量的情况是一样的,而如果是通过下标来修改序列中的元素的值或通过可变序列对象自身提供的方法来增加和删除元素时,序列对象在内存中的起始地址是不变的,仅仅是被改变值的元素地址发生变化,也就是所谓的“原地操作”。

image.png

(3)使用列表对象的extend()方法可以将另一个迭代对象的所有元素添加至该列表对象的尾部。通过extend()方法来增加到表元素也不改变其内存首地址,属于原地操作。

image.png

(4)使用列表对象的insert()方法将元素添加至列表的指定位置

image.png

尽可能从列表尾部进行元素的增加与删除操作。

 列表的insert()可以在列表的任意位置插入元素,但由于列表的自动内存管理功能,insert()方法会涉及到插入位置之后所有元素的移动,这会影响处理速度。

 类似的还有后面介绍的remove()方法以及使用pop()函数弹出列表非尾部元素和使用del命令删除列表非尾部元素的情况。


(5)使用乘法来扩展列表对象,将列表与整数相乘,生成一个新列表,新列表是原列表中元素的重复。

image.png

(6)当使用*运算符将包含列表的列表重复并创建新列表时,并不创建元素的复制,而是创建已有对象的引用。因此,当修改其中一个值时,相应的引用也会被修改。


13.png

3、列表元素的删除

(1)使用del命令删除列表中的指定位置上的元素。

14.png

(2)使用列表的pop()方法删除并返回指定(默认为最后一个)位置上的元素,如果给定的索引超出了列表的范围则抛出异常。

15.png16.png

(3)使用列表对象的remove()方法删除首次出现的指定元素,如果列表中不存在要删除的元素,则抛出异常。

0.png

4、列表元素访问与计数

(1)使用下标直接访问列表元素,如果指定下标不存在,则抛出异常。

17.png

(2)使用列表对象的index()方法获取指定元素首次出现的下标,若列表对象中不存在指定元素,则抛出异常。

18.png

(3)使用列表对象的count()方法统计指定元素在列表对象中出现的次数。

19.png

5、成员资格判断

  如果需要判断列表中是否存在指定的值,可以使用count()方法如果存在则返回大于0的数,如果返回0则表示不存在。或者,使用更加简洁的“in”关键字来判断一个值是否存在于列表中,返回结果为“True”或“False”。

20.png

6、切片操作

 切片是Python序列的重要操作之一,适用于列表、元组、字符串、range对象等序列。

 切片使用2个冒号分割的3个数字来完成。第一个数字表示切片开始位置(默认为0),第二个数字表示切片截止(但不包含)位置(默认为列表长度),第三个数字表示切片的步长(默认为1),当步长省略时可以顺便省略最后一个冒号。可以使用切片来截取列表中的任何部分,得到一个新列表,也可以通过切片来修改和删除列表中部分元素,甚至可以通过切片操作为列表对象增加元素。

 切片操作不会因为下标越界而抛出异常,而是简单地在列表尾部截断或者返回一个空列表,代码具有更强的健壮性。

21.png

可以使用切片来原地修改列表内容

22.png

使用del与切片结合来删除列表元素


23.png

7、列表排序

  使用列表对象的reserve方法进行原地排序,支持多种不同的排序方法。

24.png

使用内置函数sorted对列表进行排序并返回新列表

25.png

使用列表对象的reserve方法将元素原地逆序

26.png


8、用于序列操作的常用内置函数

 len(列表):返回列表中的元素个数,同样适用于元组、字典、集合、字符串等。

 max(列表)、min(列表):返回列表中的最大或最小元素,同样适用于元组、字典、集合、range对象等。

27.png


9、列表推导式

 列表推导式使用非常简洁的方式来快速生成满足特定需求的列表,代码具有非常强的可读性。

28.png29.png

相关文章
|
2天前
|
Python
全网最适合入门的面向对象编程教程:Python函数方法与接口-函数与方法的区别和lamda匿名函数
【9月更文挑战第15天】在 Python 中,函数与方法有所区别:函数是独立的代码块,可通过函数名直接调用,不依赖特定类或对象;方法则是与类或对象关联的函数,通常在类内部定义并通过对象调用。Lambda 函数是一种简洁的匿名函数定义方式,常用于简单的操作或作为其他函数的参数。根据需求,可选择使用函数、方法或 lambda 函数来实现代码逻辑。
|
3天前
|
存储 机器学习/深度学习 数据挖掘
深入浅出:Python编程入门与实践
【9月更文挑战第16天】本文以“深入浅出”的方式,引领读者步入Python编程的世界。从基础语法到实际应用,我们将一步步探索Python的魅力所在。无论你是编程新手,还是希望拓展技能的老手,这篇文章都将为你提供有价值的信息和指导。通过本文的学习,你将能够编写出简单而实用的Python程序,为进一步深入学习打下坚实的基础。让我们一起开始这段编程之旅吧!
|
2天前
|
机器学习/深度学习 数据采集 存储
Python编程入门:从基础到实战
【9月更文挑战第17天】本文将带你进入Python的世界,从最基础的语法开始,逐步深入到实战项目。我们将一起探索Python的强大功能和灵活性,以及如何利用它解决实际问题。无论你是编程新手,还是有一定经验的开发者,都能在这篇文章中找到有价值的内容。让我们一起开启Python的学习之旅吧!
|
3天前
|
存储 程序员 Python
Python编程入门:从零到英雄
【9月更文挑战第16天】本文是一篇针对初学者的Python编程入门指南,旨在帮助读者从零基础开始,通过简单易懂的语言和实例,逐步掌握Python编程的基本知识和技能。文章首先介绍了Python的起源和特点,然后详细讲解了Python的安装、基本语法、数据类型、控制结构、函数、模块等基础知识,最后通过一个简单的项目实例,展示了如何运用所学知识解决实际问题。全文通俗易懂,结构清晰,适合所有对Python感兴趣的读者阅读和学习。
|
3天前
|
机器学习/深度学习 监控 自动驾驶
基于深度学习的图像识别技术及其应用
【9月更文挑战第16天】本文深入探讨了基于深度学习的图像识别技术,并详细阐述了其在不同领域的应用。通过分析深度学习在图像识别中的作用机制和关键技术,本文揭示了该技术在自动驾驶、医疗诊断、安防监控等领域的应用前景。同时,文章还讨论了当前面临的挑战和未来的发展方向,为读者提供了对深度学习图像识别技术的全面认识。
|
4天前
|
机器学习/深度学习 算法 计算机视觉
深度学习在图像识别中的应用与挑战
随着人工智能技术的飞速发展,深度学习在图像识别领域的应用日益广泛。本文将探讨深度学习技术在图像识别中的基本原理、主要算法以及面临的挑战和未来发展趋势。通过对现有技术的深入分析,本文旨在为研究人员和工程师提供有价值的见解和建议。
|
4天前
|
机器学习/深度学习 边缘计算 算法
深度学习在图像处理中的应用与挑战
本文探讨了深度学习在图像处理领域的应用,特别是在图像识别、分类和分割等方面取得的突破。同时,文章也讨论了当前深度学习模型在这些任务中面临的主要挑战,如数据隐私问题、计算资源消耗以及模型的可解释性等。通过分析具体的案例研究,本文旨在为读者提供对深度学习技术实际应用及其局限性的全面了解。
|
1天前
|
机器学习/深度学习 存储 传感器
深度学习在图像识别中的应用
本文探讨了深度学习技术在图像识别领域的应用,重点介绍了卷积神经网络(CNN)的基本原理及其在不同应用场景中的表现。通过对实际案例的分析,本文展示了深度学习如何提升图像识别的准确性和效率,并讨论了其未来的发展方向。
15 4
|
3天前
|
机器学习/深度学习 边缘计算 算法
深度学习在图像识别中的应用与挑战
本文深入探讨了深度学习技术在图像识别领域的广泛应用及其面临的主要挑战。通过分析卷积神经网络(CNN)等关键技术,揭示了深度学习如何提高图像识别的准确率和效率。同时,文章也讨论了数据隐私、算法偏见以及计算资源消耗等问题,并提出了可能的解决策略。最后,展望了深度学习在未来图像识别技术中的发展方向,强调了持续创新的重要性。
|
6天前
|
机器学习/深度学习 人工智能 PyTorch
深度学习在图像识别中的应用与实践
【9月更文挑战第13天】本文将探讨深度学习技术在图像识别领域的应用,并通过实际案例展示其在解决复杂图像处理问题中的强大能力。我们将从基础概念出发,逐步深入到深度学习模型的构建、训练以及调优过程,旨在为读者提供一套完整的图像识别解决方案。通过本文,您将了解到如何利用深度学习技术提升图像识别的准确率和效率,以及如何将这些技术应用于实际项目中。