Python学习.第五天.列表

2023-11-08


前言

今日忠告:要以发展的眼光看待事物,不要抱有任何偏见。
列表相当于其它语言中的数组,一个对象包括id、type、value,变量存储的是一个对象的引用,列表存储的是多个对象的引用。


一、列表的创建与删除

例如:list1 --> 列表对象(id:1 type:list value值为三个对象 分别指向 ‘hello’, ‘world’, 98 的空间)

# 创建列表的第一种方式,使用[]
list1 = ['hello', 'world', 98, 'ya']
print(list1)
print(list1[0], list1[-4])

# 调用内置函数list()
list2 = list(['hello', 'world', 98])

在这里插入图片描述

列表的特点:
1、列表元素按顺序有序排序
在这里插入图片描述
2、索引映射唯一个数据
3、列表可以存储重复的数据
4、任意数据类型混存
5、根据需要动态分配和回收内存


二、列表的查询操作

1、index:如果查询时列表中存在n个相同元素,只返回元素中的第一个元素的索引。

		如果查询的元素在列表中不存在,则会抛出ValError
		可以在指定的区间内查找,只当的start和stop之间进行查找
list2 = list(['hello', 'world', 98])
print(list2.index('hello'))
# print(list2.index('python'))
print(list2.index('hello', 0, 3))  # 在0-3的区间内查找hello是否存在

2、获取列表中的单个元素:

		正向索引 0 到n-1
		逆向索引 -n 到 -1
		指定索引不存在,抛出indexError
# 根据索引获取列表中的单个元素
list2 = list(['hello', 'world', 98])
print(list2[2])
print(list2[-2])

3、获取列表中的多个元素

使用切片,切片的结果是对原列表片段的拷贝,id不同。

num = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# 格式:start=1:stop=6:step
# 列表计数从0开始,输出的时候包含1,不包含 stop:6
print(num[1:6:1])  # 输出2,3,4,5,6
num = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print('原列表', id(num))
num1 = num[1:6:1]
print('切片列表', id(num1))

在这里插入图片描述[start:stop:step]可任意省略一个、两个或三个,只要注意冒号的位置就可以了
步长可为整数或者负数,负索引也可以时正步长,只是start和stop的方向必须跟步长方向一致

num = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(num)  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(num[::-1])  # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
print(num[7::-1])  # [7, 6, 5, 4, 3, 2, 1, 0]
print(num[6:0:-2])  # [6, 4, 2]

4、判断指定元素在列表中是否存在

元素 in 列表名
元素 not in 列表名

5、列表元素的遍历

for 迭代变量 in 列表名
操作

三、列表元素的增、删、改操作

1、列表元素的增加操作:

(1) append():在列表的末尾添加一个元素;
(2) extend():在列表的末尾至少添加一个元素;
(3) insert():在列表的任意位置添加一个元素;
(4) 切片:在列表的任意位置添加至少一个元素;

list1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list1, id(list1))  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 2835747888320
list1.append(100)
print(list1, id(list1))  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 100] 2835747888320
# ------------------------------------
list2 = list(['hello', 'world', '!'])
list1.append(list2)  # 用append加多个元素会出现中括号
list1.extend(list2)  # 向列表一次性添加多个元素 使用extend
print(list1, id(list1))
# -------------------------------------
list2.insert(0, '世界')
print(list2)  # ['世界', 'hello', 'world', '!']
# --------------------------------------
list3 = ['春华', '秋实']
list1[1::] = list3  # 从1之后的全部切走,增加 ‘春华’,‘秋实’
print(list1)  # ['世界', '春华', '秋实']

2、列表元素的删除操作

(1)remove():一次删除一个元素,重复元素只删除第一个,元素不存在则抛出ValueError
(2)pop():删除一个指定索引位置上的元素,指定索引不存在抛出IndexError;若不指定索引,删除列表中最后一个元素。
(3)切片:一次至少删除一个元素
(4)clear:清空列表
(5)del:删除列表

list1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list1, id(list1))  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 2055327505472
list1.remove(0)
print(list1, id(list1))  # [1, 2, 3, 4, 5, 6, 7, 8, 9] 2055327505472
# ------------------------------------
list1.pop(1)  # 弹出位置为1的数字,若()内为空则弹出最后一个字符,若指定索引不存在则抛出indexError
print(list1, id(list1))  # [1, 2, 3, 4, 5, 6, 7, 8] 2055327505472
# ------------------------------------
# 切片操作:至少删除一个元素,将产生一个新的列表对象,id不同了
new_list = list1[1:3]
print('原列表', list1)  # [1, 3, 4, 5, 6, 7, 8, 9]
print('切片列表', new_list)  # 相当于删除了两头的数据  [3, 4]

list1[1:5] = []  # 将start=1 和 stop=5 之间的数据置为空
print(list1)  # 删除了中间的数据   [1, 7, 8, 9]
# ------------------------------------
list1.clear()
print(list1)
# ------------------------------------
del list1
print(list1)  # 爆红:NameError: name 'list1' is not defined

3、列表元素的修改操作

(1)为指定索引的元素赋予一个新值
(2)为指定的切片赋予一个新值

num = [1, 2, 3, 4, 5]
num[2] = 100
print(num)

num[1:3] = [100, 200, 300]
print(num)

四、列表元素的排序

(1)调用sort()方法,列表中的所有元素默认按照从小到大的顺序进行排序,可以只当reverse=True,进行降序排序。
(2)调用内置函数sorted(),将产生一个新的列表对象,可以指定reverse=True,进行降序排序,原列表不发生改变。

list1 = [11, 32, 10, 44, 56, 89]
print('排序前的列表', list1, id(list1))
list1.sort()
print('排序后的列表', list1, id(list1))
print('-----------------------------------')
# 使用内置函数
list1 = [11, 32, 10, 44, 33, 89]
print('原列表', list1, id(list1))
new_list = sorted(list1)
print('新的列表', new_list, id(new_list))
desc_list = sorted(list1, reverse=True)
print('降序列表', desc_list, id(desc_list))

在这里插入图片描述

五、列表推导式(重点)

列表生成式,简称为生成列表的公式。
语法格式:ii for i in range(1,10)
(1)i
i 表示列表元素的表达式
(2)i 自定义变量
(3)range(1,10) 可迭代对象

list1 = [i * i for i in range(1, 10)]# i*i 为 1*1 2*2 3*3 4*4 5*5 6*6……
print(list1)

# 输出 2,4,6,8,10
list1 = [i * 2 for i in range(1, 5)]
print(list1)

总结

动手去做。

今天读了一本书杨本芬老人的《秋园》,其中秋园简略的生平,最后两行是:一生尝尽酸甜苦辣,终落得如此下场。
读完之后,回味良久。
时代的一粒沙,落在人身上,就是一座山。时代在发展,这没有什么错,就是发展是以太多太多人作为代价了!不管是以前还是现在。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python学习.第五天.列表 的相关文章

  • 如何在Python的SciPy中更改稀疏矩阵中的元素?

    我构建了一个小代码 我想用它来解决涉及大型稀疏矩阵的特征值问题 它工作正常 我现在要做的就是将稀疏矩阵中的一些元素设置为零 即最顶行中的元素 对应于实现边界条件 我可以调整下面的列向量 C0 C1 和 C2 来实现这一点 不过我想知道是否有
  • 递归 lambda 表达式可能吗?

    我正在尝试编写一个调用自身的 lambda 表达式 但我似乎找不到任何语法 或者即使它是可能的 本质上我想将以下函数传输到以下 lambda 表达式中 我意识到这是一个愚蠢的应用程序 它只是添加 但我正在探索可以在 python 中使用 l
  • 如何在Python中流式传输和操作大数据文件

    我有一个相对较大 1 GB 的文本文件 我想通过跨类别求和来减小其大小 Geography AgeGroup Gender Race Count County1 1 M 1 12 County1 2 M 1 3 County1 2 M 2
  • opencv水印周围的轮廓

    我想在图像中的水印周围画一个框 我已经提取了水印并找到了轮廓 但是 不会在水印周围绘制轮廓 轮廓是在我的整个图像上绘制的 请帮我提供正确的代码 轮廓坐标的输出为 array 0 0 0 634 450 634 450 0 dtype int
  • 用缺失的日期填充其他列 Nan Pandas DataFrame

    我实际上是从几个 Excel 文件中提取数据来监控我的每日卡路里摄入量 我设法使用列表理解来生成日期 我尝试使用合并或连接 但它不起作用 ValueError 您正在尝试合并对象和 float64 列 date list 2021 05 2
  • 如何检查python xlrd库中的excel文件是否有效

    有什么办法与xlrd库来检查您使用的文件是否是有效的 Excel 文件 我知道还有其他库可以检查文件头 我可以使用文件扩展名检查 但为了多平台性我想知道是否有任何我可以使用的功能xlrd库本身在尝试打开文件时可能会返回类似 false 的内
  • Keras:如何保存模型或权重?

    如果这个问题看起来很简单 我很抱歉 但是阅读 Keras 保存和恢复帮助页面 https www tensorflow org beta tutorials keras save and restore models https www t
  • 如果在等待“read -s”时中断,在子进程中运行 bash 会破坏 tty 的标准输出吗?

    正如 Bakuriu 在评论中指出的那样 这基本上与BASH 输入期间按 Ctrl C 会中断当前终端 https stackoverflow com questions 31808863 bash ctrlc during input b
  • Django 的 request.FILES 出现 UnicodeDecodeError

    我在视图调用中有以下代码 def view request body u for filename f in request FILES items body body Filename filename n f read n 在某些情况下
  • Tensorflow 与 Keras 的兼容性

    我正在使用 Python 3 6 和 Tensorflow 2 0 并且有一些 Keras 代码 import keras from keras models import Sequential from keras layers impo
  • 使用Python计算目录的大小?

    在我重新发明这个特殊的轮子之前 有没有人有一个很好的例程来使用 Python 计算目录的大小 如果例程能够很好地以 Mb Gb 等格式格式化大小 那就太好了 这会遍历所有子目录 总结文件大小 import os def get size s
  • Matplotlib 中 x 轴标签的频率和旋转

    我在下面编写了一个简单的脚本来使用 matplotlib 生成图形 我想将 x tick 频率从每月增加到每周并轮换标签 我不知道从哪里开始 x 轴频率 我的旋转线产生错误 TypeError set xticks got an unexp
  • 如何在 pandas 中使用 read_fwf 跳过空行?

    I use pandas read fwf http pandas pydata org pandas docs stable generated pandas read fwf htmlPython pandas 0 19 2 中的函数读
  • Elasticsearch 通过搜索返回拼音标记

    我用语音分析插件 https www elastic co guide en elasticsearch plugins current analysis phonetic html由于语音转换 从弹性搜索中进行一些字符串匹配 我的问题是
  • Django Admin 中的反向内联

    我有以下 2 个型号 现在我需要将模型 A 内联到模型 B 的页面上 模型 py class A models Model name models CharField max length 50 class B models Model n
  • 如何与其他用户一起使用 pyenv?

    如何与其他用户一起使用 pyenv 例如 如果我在用户 test 的环境中安装了 pyenv 则当我以 test 身份登录时可以使用 pyenv 但是 当我以其他用户 例如 root 身份登录时如何使用 pyenv 即使你这么做了 我也会s
  • 如何根据第一列创建新列,同时考虑Python Pandas中字母和列表的大小? [复制]

    这个问题在这里已经有答案了 我在 Python Pandas 中有 DataFrame 如下所示 col1 John Simon prd agc Ann White BeN and Ann bad list Ben Wayne 我需要这样做
  • 双击打开 ipython 笔记本

    相关文章 通过双击 osx 打开 ipython 笔记本 https stackoverflow com questions 16158893 open an ipython notebook via double click on osx
  • TKinter 中的禁用/启用按钮

    我正在尝试制作一个像开关一样的按钮 所以如果我单击禁用按钮 它将禁用 按钮 有效 如果我再次按下它 它将再次启用它 我尝试了 if else 之类的东西 但没有成功 这是一个例子 from tkinter import fenster Tk
  • 如何为不同操作系统/Python 版本编译 Python C/C++ 扩展?

    我注意到一些成熟的Python库已经为大多数架构 Win32 Win amd64 MacOS 和Python版本提供了预编译版本 针对不同环境交叉编译扩展的标准方法是什么 葡萄酒 虚拟机 众包 我们使用虚拟机和Hudson http hud

随机推荐

  • 遥感影像分类任务的复现

    目录 一 概述 二 环境配置 三 运行 1 dataset 2 configs 代码下载地址 GitHub cxyth rs segment pytorch 用于遥感影像分类任务的语义分割模板工程 部分解码器下载地址
  • “那不勒斯”服务器芯片,那不勒斯定名 AMD发布全新CPU品牌EPYC

    在今天举行的2017年AMD财务分析师日活动上 AMD正式公布了旗下的全新一代服务器处理器品牌 EPYC EPYC系列产品此前代号为大家熟悉的 那不勒斯 Naples 最大核心数量为32核 支持超线程技术 可提供128条PCI E 3 0通
  • 用python实现西绪福斯黑洞(即123数字黑洞)的演示

    目录 一 123数字黑洞描述 二 问题解决 1 内容描述 2 实现思路 3 代码功能实现 1 分解输入的数字字符串 生成数字列表 2 由数字列表生成新的数字字符串 3 主程序实现输入和输出 三 完整代码 四 结果输出 1 验证前文的数据 2
  • sql server 2000:不能打开到主机的连接,在端口1433:连接失败

    来源 http topic csdn net u 20081104 20 fd1f1e2b 9350 43a4 9892 34a98a709216 html http hi baidu com sinber blog item a12e8d
  • Pycharm编程题——判断输入数字的奇偶

    输入一个数字 判断它是奇数还是偶数 num int input 请输入一个整数 if num 2 0 print num 是偶数 else print num 是奇数
  • 垃圾收集机制原理

    目录标题 1 可回收对象 1 引用计数算法 2 可达性分析算法 2 垃圾收集算法 1 标记 清除算法 2 复制算法 3 标记 整理算法 4 分代收集算法 3 新生代 老年代 4 什么时候GC回收对象 Java堆 Java Heap 是Jav
  • pandas 数据类型之 Series

    Python 官网 https www python org 这里 才 python 前沿 可惜是英文原版 所以 我要练习英文阅读 我的CSDN主页 My Python 学习个人备忘录 我的HOT博 老齐教室 自学并不是什么神秘的东西 一个
  • Scala 正则表达式

    Scala 正则表达式 Scala 通过 scala util matching 包中的 Regex 类来支持正则表达式 以下实例演示了使用正则表达式查找单词 Scala import scala util matching Regex o
  • chatglm docker镜像,一键部署chatglm本地知识库

    好久没有写文章了 今天有空 记录一下chatglm本地知识库的docker镜像制作过程 核心程序是基于 闻达 开源项目 稍作改动 镜像可以直接启动运行 大家感兴趣可以进入镜像内部查看 代码位于 app 目录下 一 制作镜像 docker t
  • ISTQB认证工程师学习笔记(5)——测试管理

    测试管理的学习目标 测试组织 测试计划和估算 测试监督与控制 配置管理 风险和测试 缺陷管理 测试组织 独立测试 测试任务可以由具体指定的测试人员完成 也可以由其他角色人员完成 比如客户 由于作者和测试员的认知取向不同 一定程度的独立性可以
  • SpringCloud Alibaba Nacos作为配置中心不生效问题

    在使用Springcloud Alibaba 的Nacos作为配置中心时 遇到了在配置中心中提交相关配置后但配置还是从本地获取 没有从nacos中获取的情况 可能是如下原因导致 1 需要自行新建bootstrap properties并配置
  • 人工稚能之sklearn分类

    分类算法和聚类比较类似 都是将输入数据赋予一个标签类别 区别是分类算法的分类是预先确定的 有明确含义的 而聚类的标签是从输入数据本身的分布中提取出来的一种抽象的类别 聚类是无监督算法 而分类是有监督的 除了输入数据x外 还有标签y 分类算法
  • WSL 更新NVIDIA 驱动 安装CUDA

    WSL 一定要使用WSL2 我选择的linux系统是ubuntu22 04 在微软应用商店安装的 安装完成之后可以通过 wsl l v查看 NVIDIA 驱动 WSL 中不要直接安装linux版的显卡驱动 而是需要在windows中安装驱动
  • 动态知识图补全问题

    4 19 4 23 动态信息 1 Dual Quaternion Knowledge Graph Embeddings 本文应该是静态方法 距离公式和旋转公式的一个统一框架 提出一个新的映射空间 Dual Quaternion space
  • 民数记研读1——于宏洁

    民数记研读 于宏洁 1 西乃山下 一 第一次数点百姓 二 各支派安营 三 前行 四 银号 2 几种重要的人 一 利未人 二 拿细耳人的条例 三 首领 3 管与教 一 从荣耀角度来看神的管教 二 在神的管教中 要注意的几个点 三 民数记中十次
  • Apple 的 plist 编辑器入门指南:基础操作与高级功能详解

    PlistEdit Pro是一款专为macOS编写的最高级属性列表Plist编辑器 对于Mac和IOS开发人员来说 编写应用程序时必须编辑各种列表文件 PlistEdit Pro通过提供直观且功能强大的界面 使编辑这些文件更加容易 它不仅能
  • 深度学习机器学习目标检测

    一 目标检测 1 深度学习开发流程 2 应用案例 3 目标检测算法基本流程 二 机器学习 1 机器学习算法能解决那些问题 分类问题 图像识别 垃圾邮件识别 回归问题 各种预测 房价 天气 股价等等 排序问题 推荐 点击率排序 生成问题 图像
  • 完全卸载Android Studio(卸载得干干净净)

    步骤其实很简单 一共三步 但是每一步都需要完成 步骤如下 打开控制面板或腾讯软件管家等执行常规的卸载操作 找到SDK的安装目录手动删除SDK 进入 C Users lt 你的用户名下 gt 目录下 手动删除 android AndroidS
  • github 创建分支,本地代码上传github 服务器上

    git分布式版本控制系统 我第一个接触的版本控制系统是svn 当时觉得版本控制就是这样 直到我遇到了git git是分布式版本控制系统 合适分布式开发 强调个体 速度快 灵活 代码冲突了也比较好解决 最让我喜欢的还是git的分支切换 在gi
  • Python学习.第五天.列表

    Python学习 第五天 列表 前言 一 列表的创建与删除 二 列表的查询操作 1 index 如果查询时列表中存在n个相同元素 只返回元素中的第一个元素的索引 2 获取列表中的单个元素 3 获取列表中的多个元素 4 判断指定元素在列表中是