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

python源码中的学习笔记_第4章_列表

列表基础##主题:列表基础#if__name____main__:#列表中可以存储多个元素,每个元素的数据类型可以不相同#每个元素指向不同的对象&

列表基础

#
# 主题:列表基础
#if __name__ == '__main__':# 列表中可以存储多个元素,每个元素的数据类型可以不相同# 每个元素指向不同的对象,不同的对象存储不同类型的数据myList = ['hello', True, 98]print( id(myList)) # 输出 2686147977800print( type(myList)) # 输出 print(myList) # 输出 ['hello', True, 98]

创建列表

#
# 主题:列表基础
#if __name__ == '__main__':# 列表中可以存储多个元素,每个元素的数据类型可以不相同# 每个元素指向不同的对象,不同的对象存储不同类型的数据myList = ['hello', True, 98]print( id(myList)) # 输出 2686147977800print( type(myList)) # 输出 print(myList) # 输出 ['hello', True, 98]

列表的特点

在这里插入图片描述

#
# 主题:列表的特点
#if __name__ == '__main__':a = ['hello', True, 1]# 列表元素按顺序有序排序# 索引映射唯一数据print(a[0], a[-3])# 列表可以储存重复数据# 任意数据类型混存b = ['hello', True, 1, 1]print( list(b))# 系统会自动根据需要动态分配和回收内存

查询列表

#
# 主题:查询列表
#if __name__ == '__main__':a = ['hello', True, 2, True]# 获取列表中指定元素的索引print(a.index('hello')) # 输出 0print(a.index(True)) # 输出 1# 若列表中有若干相同的元素,则只返回相同元素的第一个元素的索引print(a.index(True)) # 输出 1# 若列表中没有要查询的元素,则报错 ValueError# index(要查找的元素, stop, end) 可以规定查询的范围为 [stop, end)print(a.index('hello', 0, 3)) # 输出 0print(a.index(1, 0, 3)) # 输出 1,因为 True 的值为 1# print(a.index(2, 0, 2)) # 元素 2 不在索引号 0~1 的范围内,会报错ValueError# 根据索引号获取列表中的单个元素print(a[3]) # 输出 Trueprint(a[-1]) # 输出 Trueprint(a[-4]) # 输出 hello# 若列表中没有要查询的索引,则报错 IndexError# 列表名[start: stop: step] 获取列表中多个元素(又称“切片”)# 列表名[start: stop] 查询范围[start, stop)# 切片得到的列表与愿列表是不同的对象,只不过两个有相同的元素a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]print(a[0: 2: 1])print(a[0: 2]) # 默认步长为 1print(a[0: 2:]) # 默认步长为 1print(a[ : 6: 2]) # 默认范围从第一个元素开始print(a[0: : 2]) # 默认范围到最后一个元素结束print(a[ : : -1]) # 默认范围为整个列表,步长为负数表明切片列表元素与原列表元素顺序相反print(a[9: : -1]) # 与上一句输出相同print(a[6: 0: -2])

列表元素的判断与遍历

#
# 主题:列表元素的判断与遍历
#if __name__ = '__main__':lst = [10, 20, 'python', 'hello']print(10 in lst)print(100 in lst)print(10 not in lst)print(100, not in lst)# 遍历列表元素for item in lst:print(item)

添加列表元素

#
# 主题:添加列表元素
#if __name__ == '__main__':lst = [10, 20, 30]lst.append(100) # 在原列表的后面添加新元素print(lst) # 添加元素后的列表与原列表是同一个对象lst2 = ['hello', 'world']lst.append(lst2) # lst2 作为对象,整体成为 lst 的一个元素print(lst) # [10, 20, 30, 100, ['hello', 'world']]lst.extend(lst2) # 获取 lst2 中每个数据,并按顺序添加到原数列的后面print(lst) # [10, 20, 30, 100, ['hello', 'world'], 'hello', 'world']lst.insert(1, '我在这') # 在规定的索引处添加自定义对象print(lst) # [10, '我在这', 20, 30, 100, ['hello', 'world'], 'hello', 'world']lst[1: : ] = ['a', 'b', 'c'] # 将原列表中规定范围内的元素删掉,再添加新的元素print(lst)

删除列表元素

#
# 主题:删除列表元素
#if __name__ == '__main__':lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]lst.remove(4) # 删掉指定的元素# 若要删除的元素不在列表中,则报错 ValueErrorprint(lst) # [1, 2, 3, 5, 6, 7, 8, 9]lst.pop(1) # 删除指定索引上的元素# 若指定的索引超出列表的索引范围,则报错 IndexErrorprint(lst) # [1, 3, 5, 6, 7, 8, 9]lst.pop() # 未指定索引,则默认删除最后一个元素print(lst) # [1, 3, 5, 6, 7, 8]lst1 = lst[1: 3] # 该操作称为“切片”,lst1 与 lst 是不同的对象,即所对应的存储位置不同print(lst1) # [3, 5]print(lst) # [1, 3, 5, 6, 7, 8]lst[1: 3] = [] # 该操作前后,都是同一个对象,即 lstprint(lst) # [1, 6, 7, 8]lst.clear() # 清除列表中所有元素print(lst) # []lst.extend(['这', '是', '添', '加', '的', '内', '容'])print(lst) # ['这', '是', '添', '加', '的', '内', '容']del lst # 删除列表对象,删除了列表的内容和地址# print(lst) # 将报错 NameError,报错 lst 没有定义

修改列表元素

#
# 主题:修改列表元素
#if __name__ == "__main__":lst = [1, 2, 3, 4, 5, 6]lst[2] = 30 # 该操作修改了 lst[2] 上的引用# 原先 lst[2] 指向 3 所在对象,后来指向 30 所在对象print(lst) # [1, 2, 30, 4, 5, 6]lst[1: 3] = [300, 400, 500, 600]print(lst) # [1, 300, 400, 500, 600, 4, 5, 6]

排序列表元素

#
# 主题:排序列表元素
#if __name__ == '__main__':lst = [20, 40, 10, 98, 54]print('原列表:', lst)lst.sort() # 无参数,表明默认升序排序。相当于 lst.sort(reverse=False)# 排序时在原列表的基础上进行的,没有生成新的列表print('升序后:',lst) # [10, 20, 40, 54, 98]lst.sort(reverse=True)print('降序后:', lst) # [98, 54, 40, 20, 10]lst1 = sorted(lst) # 升序排序,产生新的列表对象print(lst1) # [10, 20, 40, 54, 98]lst1 = sorted(lst, reverse=True) # 降序排序,产生新列表对象print(lst1) # [98, 54, 40, 20, 10]

列表生成式(生成列表的公式)

#
# 主题:列表生成式(生成列表的公式)
#if __name__ == '__main__':lst = [i*i for i in range(1, 10)] # for i in range(1, 10) 是 i 的取值范围[1, 10)# i*i 是 lst 的通项(类比数学数列的概念)print(lst) # [1, 4, 9, 16, 25, 36, 49, 64, 81]

推荐阅读
  • 使用R语言进行Foodmart数据的关联规则分析与可视化
    本文探讨了如何利用R语言中的arules和arulesViz包对Foodmart数据集进行关联规则的挖掘与可视化。文章首先介绍了数据集的基本情况,然后逐步展示了如何进行数据预处理、规则挖掘及结果的图形化呈现。 ... [详细]
  • 本文探讨了在Python中多线程与多进程的性能差异,特别是在处理CPU密集型任务和I/O密集型任务时的表现。由于全局解释器锁(GIL)的存在,多线程在利用多核CPU方面表现不佳,而多进程则能有效利用多核资源。 ... [详细]
  • Python Selenium WebDriver 浏览器驱动详解与实践
    本文详细介绍了如何使用Python结合Selenium和unittest构建自动化测试框架,重点解析了WebDriver浏览器驱动的配置与使用方法,涵盖Chrome、Firefox、IE/Edge等主流浏览器。 ... [详细]
  • 本文档涵盖了多个 Python 编程练习题,包括使用 while 和 for 循环处理数字序列、字符串操作以及简单的算法实现等。每道题目都提供了详细的代码示例,旨在帮助初学者加深对 Python 基础知识的理解。 ... [详细]
  • 本文探讨了Android系统中联系人数据库的设计,特别是AbstractContactsProvider类的作用与实现。文章提供了对源代码的详细分析,并解释了该类如何支持跨数据库操作及事务处理。源代码可从官方Android网站下载。 ... [详细]
  • java datarow_DataSet  DataTable DataRow 深入浅出
    本篇文章适合有一定的基础的人去查看,最好学习过一定net编程基础在来查看此文章。1.概念DataSet是ADO.NET的中心概念。可以把DataSet当成内存中的数据 ... [详细]
  • 本文详细探讨了编程中的命名空间与作用域概念,包括其定义、类型以及在不同上下文中的应用。 ... [详细]
  • 我在尝试将组合框转换为具有自动完成功能时遇到了一个问题,即页面上的列表框也被转换成了自动完成下拉框,而不是保持原有的多选列表框形式。 ... [详细]
  • 探索CNN的可视化技术
    神经网络的可视化在理论学习与实践应用中扮演着至关重要的角色。本文深入探讨了三种有效的CNN(卷积神经网络)可视化方法,旨在帮助读者更好地理解和优化模型。 ... [详细]
  • 2023年1月28日网络安全热点
    涵盖最新的网络安全动态,包括OpenSSH和WordPress的安全更新、VirtualBox提权漏洞、以及谷歌推出的新证书验证机制等内容。 ... [详细]
  • 本文详细探讨了select和epoll两种I/O多路复用技术的内部实现原理,分析了它们在处理大量文件描述符时的性能差异,并通过具体示例代码展示了select的工作流程。 ... [详细]
  • 在学习了Splay树的基本查找功能后,可能会觉得它与普通的二叉查找树没有太大的区别,仅仅是通过splay操作减少了时间开销。然而,Splay树之所以被誉为“序列之王”,主要在于其强大的区间操作能力。 ... [详细]
  • selenium通过JS语法操作页面元素
    做过web测试的小伙伴们都知道,web元素现在很多是JS写的,那么既然是JS写的,可以通过JS语言去操作页面,来帮助我们操作一些selenium不能覆盖的功能。问题来了我们能否通过 ... [详细]
  • 将XML数据迁移至Oracle Autonomous Data Warehouse (ADW)
    随着Oracle ADW的推出,数据迁移至ADW成为业界关注的焦点。特别是XML和JSON这类结构化数据的迁移需求日益增长。本文将通过一个实际案例,探讨如何高效地将XML数据迁移至ADW。 ... [详细]
  • 在使用mybatis进行mapper.xml测试的时候发生必须为元素类型“mapper”声明属性“namespace”的错误项目目录结构UserMapper和UserMappe ... [详细]
author-avatar
wuli空空以空空
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有