Python 列表List 整理

2023-12-19

目录

为什么需要列表

列表特点

列表示意图

创建列表

使用中括号创建

使用内置函数创建

内存示意图

删除列表

查询操作

获取单个元素

获取指定元素索引

全列表查找

指定位置查找

获取列表多个元素

切片的范围

Step设定

Step为正数

Step为负数

判断元素是否存在

列表元素的遍历

增加元素

Append

Extend

Insert

切片

修改元素

修改索引

切片

排序

列表sort方法

内置函数sorted

删除元素

Remove

Pop

clear

列表生成式

总结


为什么需要列表

1.变量可以存储一个元素,而列表是一个‘大容器’可以存储N多个元素,

程序可以方便的对这些数据进行整体操作;

2.列表相当于其他语言中的数组。

列表特点

列表元素按顺序有序排序

索引映射唯一个数据

列表可以存储重复数据

任意数据类型混存

根据需要动态分配和回收内存

列表示意图

创建列表

列表需要使用中括号[],元素之间使用英文的逗号进行分隔。

使用中括号创建

使用中括号创建列表,数据内容有字符串、数字、元组类型,其中还有重复的数据。

示例如下:

list1 = ['zhangsan', '张三', 1, 1, ('lisi', 2)]
print(list1)
print(type(list1))

# 执行结果
# ['zhangsan', '张三', 1, 1, ('lisi', 2)]
# <class 'list'>

使用内置函数创建

使用内置函数list()把元组数据转化为list。

示例如下:

list2 = list((1, 'zhangsan', 'lisi'))
print(list2)
print(type(list2))

# 执行结果
# [1, 'zhangsan', 'lisi']
# <class 'list'>

内存示意图

列表中存储的并不是数据,而是数据的引用。

删除列表

删除列表操作使用del方法,删除后不可再访问该列表。

示例如下:

list3 = [1, 2, 3, 4]
print(list3)

del list3
print(list3)

执行结果

[1, 2, 3, 4]
Traceback (most recent call last):
  File "E:\lianxipy\day3\列表.py", line 25, in <module>
    print(list3)
NameError: name 'list3' is not defined

查询操作

获取单个元素

可以通过指定索引(正向或逆向),获取相对应的元素。

注意:如果指定索引不存在元素,则抛出indexError异常类型。

示例如下:

list4 = [1, '张三', 'lisi', 'lisi']
print(list4[0])
print(list4[-1])
print(list4[-4])

# 执行结果
# 1
# lisi
# 1

可以看到通过指定索引0和-4获取的都是第一个列表值。

获取指定元素索引

使用列表的index函数,可以查找指定元素位于列表中的索引值,

只返回第一个符合的索引值;

但是如果不存在,则会抛出ValueError异常。

全列表查找

示例如下:

list4 = [1, '张三', 'lisi', 'lisi']
print(list4.index('lisi'))

# 执行结果
# 2
指定位置查找

指定位置查找是指,在使用index函数时指定起始和终止查找范围。

示例如下:

list4 = [1, '张三', 'lisi', 'lisi', 'lisi']
print(list4.index('lisi', 3, 4))

# 执行结果
# 3

从索引3(包含3)开始查找  查找到索引4(不包含4)。

获取列表多个元素

是一种通过切片形式来获取多个元素,具体格式为:列表名[start:stop:step]

返回结果为原列表相应片段的拷贝。

切片的范围

start 起始位置,可以与stop组合使用也可以单独使用

stop 终结位置,可以与start组合使用也可以单独使用

示例如下:

list4 = [1, '张三', 'lisi', 'lisi', 'lisi']
# 单独使用stop 表示从start(包含start位置)到最后
list4_1 = list4[1:]
print(list4_1)  # ['张三', 'lisi', 'lisi', 'lisi']

# 单独使用stop 表示从开始到stop (不包含stop位置) 为止
list4_2 = list4[:3]
print(list4_2) # [1, '张三', 'lisi']

# 组合使用  表示从start(包含start位置)到stop (不包含stop位置) 为止
list4_3 = list4[1:3]
print(list4_3) # ['张三', 'lisi']
Step设定

step默认为1,也就是不设置的情况下是1。

Step为正数

切片的第一个元素默认是列表的第一个元素。

示例如下:

list4 = [1, '张三', 'lisi', 'lisi', 'lisi']
# step为正数
print(list4[:3:2])  # 从0开始取到3为止,步长为2,结果为:[1, 'lisi']
print(list4[1:3:2]) # 从1开始取到3为止,步长为2,结果为:['张三']
print(list4[1::2])  # 从1开始取到最后,步长为2,结果为:['张三', 'lisi']
Step为负数

切片的第一个元素默认是列表的最后一个元素。

示例如下:

list4 = [1, '张三', 'lisi1', 'lisi2', 'lisi3']
print(list4[:-3:-1])   
# 从列表最后一个元素开始到-3(倒数第三个)为止,步长为1,结果为:['lisi3', 'lisi2']
print(list4[-1:-4:-1]) 
# 从列表最后一个元素开始到-4(倒数第四个)为止,步长为1,结果为:['lisi3', 'lisi2', 'lisi1']
print(list4[-2::-1])   
# 从列表倒数第二个元素开始到第一个元素为止,步长为1,结果为:['lisi2', 'lisi1', '张三', 1]

判断元素是否存在

使用in 与 not in 来判断指定元素在列表中是否存在,返回布尔值。

示例如下:

list5 = [1, 2, 3, 'zhang', 'san', 'li']
print(1 in list5)
print('zhang' not in list5)

# 执行结果
# True
# False
列表元素的遍历

遍历在列表的使用中经常出现,

格式:

for 迭代变量 in 列表名:
   具体操作

下面是如何遍历。

示例如下:

for i in list5:
    print(i)

# 执行结果
# 1
# 2
# 3
# zhang
# san
# li

增加元素

Append

在列表的末尾添加一个元素

示例如下:

list6 = [1]

# append
list6.append('end')
print(list6)

# 执行结果
# [1, 'end']

Extend

在列表的末尾至少添加一个元素。可使用字典、列表、元组、字符串等格式作为参数添加,

当以字符串参数添加时,会以单个字母形式添加入列表(认为是多个)

示例如下:

list6 = [1]
list6.extend({'end1'})
list6.extend(['end2'])
list6.extend(('end3',))
list6.extend('end4')
print(list6)

# 执行结果
# [1, 'end1', 'end2', 'end3', 'e', 'n', 'd', '4']

Insert

在列表的任意位置添加一个元素

示例如下:

list6 = [1]
list6.insert(0, 'zhangsan')
print(list6)
list6.insert(4, 'lisi')
print(list6)

# 执行结果
# ['zhangsan', 1]
# ['zhangsan', 1, 'lisi']

切片

在列表的任意位置添加至少一个元素。可以说是添加,也算是修改。

示例如下:

print('原列表:', list6)
list6[:1] = [1, 2, 3]
print(list6)

# 执行结果
# 原列表: [1]
# [1, 2, 3]

修改元素

修改索引

为指定索引的元素赋予一个新值。

示例如下:

list7 = [1, 2, 3]
print('原列表:', list7, id(list7))
list7[0] = 100
print(list7, id(list7))

# 执行结果
# 原列表: [1, 2, 3] 2666522038856
# [100, 2, 3] 2666522038856

可以看出在修改后列表id并未发生改变,还是原来的列表,只是值发生了改变。

切片

为指定的切片赋予一个新值。

示例如下:

list7 = [1, 2, 3]
print('原列表:', list7, id(list7))
list7[2:3] = [100, 110]
print(list7, id(list7))

# 执行结果
# 原列表: [1, 2, 3] 2110356345416
# [1, 2, 100, 110] 2110356345416

通过切片修改,把原来的第三个元素修改为100并添加了110。

排序

常见的两种方式来实现排序。

需要注意:排序的列表中不能是混合类型的即数字和字符串混合,必须是同样类型的,否则无法比较会抛出TypeError.

列表sort方法

调用sort()方法,列表中的所有元素默认按照从大到小的顺序进行排序,可以指定reverse=True,进行降序排序。

示例如下:

list8 = [3, 4, 1, 4, 2, 0]
list9 = ['b', 'a', 'f', 'e']
# sort方法
print('原列表:', list8, id(list8))
list8.sort()
print(list8, id(list8))
# 降序
list8.sort(reverse=True)
print(list8, id(list8))

print('原列表:', list9, id(list9))
list9.sort()
print(list9, id(list9))
# 降序
list9.sort(reverse=True)
print(list9, id(list9))

执行结果:

原列表: [3, 4, 1, 4, 2, 0] 2399479616072
[0, 1, 2, 3, 4, 4] 2399479616072
[4, 4, 3, 2, 1, 0] 2399479616072
原列表: ['b', 'a', 'f', 'e'] 2399479616584
['a', 'b', 'e', 'f'] 2399479616584
['f', 'e', 'b', 'a'] 2399479616584

使用列表的sort函数是对原列表进行正序和倒序排序,直接修改了原列表。

内置函数sorted

调用内置函数sorted(),可以指定reverse=True,进行降序排序,原列表不发生改变。

示例如下:

list8 = [3, 4, 1, 4, 2, 0]
# 内置函数sorted
print('原列表:', list8, id(list8))
list8_1 = sorted(list8)
print(list8_1, id(list8_1))
# 降序
list8_2 = sorted(list8, reverse=True)
print(list8_2, id(list8_2))

print('原列表:', list8)

执行结果:

原列表: [3, 4, 1, 4, 2, 0] 2839586820680
[0, 1, 2, 3, 4, 4] 2839586821192
[4, 4, 3, 2, 1, 0] 2839587379080
原列表: [3, 4, 1, 4, 2, 0]

可以看出使用内置函数sorted是对原列表排序后,创建了新的列表,

原列表并没有发生改变。

删除元素

Remove

删除列表中的某个元素,当元素不存在时,会抛出ValueError异常

示例如下:

list10 = [1, 2, 3, 4, 5]
print('原列表:', list10)

# 删除列表中的元素
list10.remove(2)
print(list10)

# 执行结果
# 原列表: [1, 2, 3, 4, 5]
# [1, 3, 4, 5]

Pop

抛出最后一个元素 并返回被删除的元素。

示例如下:

list10 = [1, 2, 3, 4, 5]
print('原列表:', list10)
print(list10.pop())
print(list10.pop())
print(list10)

# 执行结果
# 5
# 4
# [1, 2, 3]

clear

清空列表内容。

示例如下:

list10.clear()
print(list10)

# 执行结果
# 原列表: [1, 2, 3, 4, 5]
# []

列表生成式

列表生成式是“生成列表的公式”的简称。

语法格式:[元素表达式 for 自定义变量 in 可迭代对象]

示例如下:

list11 = [x for x in range(1, 10)]
print(list11)
list12 = [x*2 for x in range(1, 10)]
print(list12)

# 执行结果
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
# [2, 4, 6, 8, 10, 12, 14, 16, 18]

注意:表示列表元素的表达式中需要包含自定义变量

总结

对python 列表数据类型内容进行了整理,包含使用列表原因、特点,创建列表和增删改查及排序操作。

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

Python 列表List 整理 的相关文章

  • 保存为 HDF5 的图像未着色

    我目前正在开发一个将文本文件和 jpg 图像转换为 HDF5 格式的程序 用HDFView 3 0打开 似乎图像仅以灰度保存 hdf h5py File Sample h5 img Image open Image jpg data np
  • 中断 Select 以添加另一个要在 Python 中监视的套接字

    我正在 Windows XP 应用程序中使用 TCP 实现点对点 IPC 我正在使用select and socketPython 2 6 6 中的模块 我有三个 TCP 线程 一个读取线程通常会阻塞select 一个通常等待事件的写入线程
  • Django 的内联管理:一个“预填充”字段

    我正在开发我的第一个 Django 项目 我希望用户能够在管理中创建自定义表单 并向其中添加字段当他或她需要它们时 为此 我在我的项目中添加了一个可重用的应用程序 可在 github 上找到 https github com stephen
  • 将 python2.7 与 Emacs 24.3 和 python-mode.el 一起使用

    我是 Emacs 新手 我正在尝试设置我的 python 环境 到目前为止 我已经了解到在 python 缓冲区中使用 python mode el C c C c将当前缓冲区的内容加载到交互式 python shell 中 显然使用了什么
  • 使用字典映射数据帧索引

    为什么不df index map dict 工作就像df column name map dict 这是尝试使用index map的一个小例子 import pandas as pd df pd DataFrame one A 10 B 2
  • 在Python中连接反斜杠

    我是 python 新手 所以如果这听起来很简单 请原谅我 我想加入一些变量来生成一条路径 像这样 AAAABBBBCCCC 2 2014 04 2014 04 01 csv Id TypeOfMachine year month year
  • “隐藏”内置类对象、函数、代码等的名称和性质[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我很好奇模块中存在的类builtins无法直接访问的 例如 type lambda 0 name function of module
  • 如何通过索引列表从 dask 数据框中选择数据?

    我想根据索引列表从 dask 数据框中选择行 我怎样才能做到这一点 Example 假设我有以下 dask 数据框 dict A 1 2 3 4 5 6 7 B 2 3 4 5 6 7 8 index x1 a2 x3 c4 x5 y6 x
  • 如何使用 pybrain 黑盒优化训练神经网络来处理监督数据集?

    我玩了一下 pybrain 了解如何生成具有自定义架构的神经网络 并使用反向传播算法将它们训练为监督数据集 然而 我对优化算法以及任务 学习代理和环境的概念感到困惑 例如 我将如何实现一个神经网络 例如 1 以使用 pybrain 遗传算法
  • Cython 和类的构造函数

    我对 Cython 使用默认构造函数有疑问 我的 C 类 Node 如下 Node h class Node public Node std cerr lt lt calling no arg constructor lt lt std e
  • Jupyter Notebook 找不到 Python 模块

    不知道发生了什么 但每当我使用 ipython 氢 原子 或 jupyter 笔记本时都找不到任何已安装的模块 我知道我安装了 pandas 但笔记本说找不到 我应该补充一点 当我正常运行脚本时 python script py 它确实导入
  • 从 NumPy ndarray 中选择行

    我只想从 a 中选择某些行NumPy http en wikipedia org wiki NumPy基于第二列中的值的数组 例如 此测试数组的第二列包含从 1 到 10 的整数 gt gt gt test numpy array nump
  • import matplotlib.pyplot 给出 AttributeError: 'NoneType' 对象没有属性 'is_interactive'

    我尝试在 Pycharm 控制台中导入 matplotlib pyplt import matplotlib pyplot as plt 然后作为回报我得到 Traceback most recent call last File D Pr
  • 如何使用原始 SQL 查询实现搜索功能

    我正在创建一个由 CS50 的网络系列指导的应用程序 这要求我仅使用原始 SQL 查询而不是 ORM 我正在尝试创建一个搜索功能 用户可以在其中查找存储在数据库中的书籍列表 我希望他们能够查询 书籍 表中的 ISBN 标题 作者列 目前 它
  • 在本地网络上运行 Bokeh 服务器

    我有一个简单的 Bokeh 应用程序 名为app py如下 contents of app py from bokeh client import push session from bokeh embed import server do
  • 实现 XGboost 自定义目标函数

    我正在尝试使用 XGboost 实现自定义目标函数 在 R 中 但我也使用 python 所以有关 python 的任何反馈也很好 我创建了一个返回梯度和粗麻布的函数 它工作正常 但是当我尝试运行 xgb train 时它不起作用 然后 我
  • 将 Python 中的日期与日期时间进行比较

    所以我有一个日期列表 datetime date 2013 7 9 datetime date 2013 7 12 datetime date 2013 7 15 datetime date 2013 7 18 datetime date
  • 如何应用一个函数 n 次? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 假设我有一个函数 它接受一个参数并返回相同类型的结果 def increment x return x 1 如何制作高阶函数repeat可以
  • 如何计算Python中字典中最常见的前10个值

    我对 python 和一般编程都很陌生 所以请友善 我正在尝试分析包含音乐信息的 csv 文件并返回最常听的前 n 个乐队 从下面的代码中 每听一首歌曲都是一个列表中的字典条目 格式如下 album Exile on Main Street
  • Pandas 每周计算重复值

    我有一个Dataframe包含按周分组的日期和 ID df date id 2022 02 07 1 3 5 4 2022 02 14 2 1 3 2022 02 21 9 10 1 2022 05 16 我想计算每周有多少 id 与上周重

随机推荐

  • 华纳云:网站空间提示容量已满有哪些解决方法?

    当网站空间容量已满时 您可以采取一些解决方法来释放空间 优化资源利用或扩大存储容量 以下是一些可能的解决方法 删除不必要的文件 检查网站文件和数据库 删除不再需要的或过期的文件 这可能包括旧的备份 日志文件 临时文件等 优化数据库 如果您的
  • HTTP JSON接口模拟工具Interfake快速入门教程

    一 简介 Interfake能简便地创建虚假的HTTP API 只需简单几行代码就可以创建模拟JSON接口 使用命令行方式也可以不写代码 不需要安装web服务器 Interfake是NodeJs开发的 是一款开源Mock Server工具
  • 软件测试/测试开发/人工智能丨使用 GraphWalker 实现自动化测试用例生成

    GraphWalker是一个用于模型驱动测试 Model Based Testing 的工具 它通过有向图 图模型 来描述系统的行为 然后生成测试用例以覆盖不同的路径 以下是使用GraphWalker实现自动化测试用例生成的基本步骤 步骤
  • Html+单页面引入element以及Vue框架引用地址报错(unpkg.com国内无法访问可代替方案)

    问题 单页面引入element以及vue 地址报错 请求超时 使用的引用地址是官网上提供 但是没解决问题 一 原因 unpkg 也没有幸免于难 也被墙了 unpkg上的相关资源都不能访问 才导致项目资源加载不出 二 解决方法 方法一 可以使
  • Python不是一种伟大的编程语言?

    作为一门简洁易用 生态蓬勃且具有高泛用性的编程语言 Python一直以来都被不少人称作 编程语言中的瑞士军刀 尤其随着近来AI热潮席卷全球 Python在编程语言圈中的地位也随之水涨船高 甚至一度被视作AI专用语言或大数据专用语言 然而从语
  • 软件测试/测试开发/人工智能丨分类,二分类和回归问题的对应场景与区别

    分类 二分类和回归问题是机器学习中常见的三种任务类型 它们分别适用于不同的场景 具有不同的目标和输出 1 分类问题 Classification 场景 适用于将数据点分到不同的类别或标签中的问题 每个类别代表一种离散的类别或状态 例子 判断
  • OpenCV4工业缺陷检测的六种方法

    发现宝藏 前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住分享一下给大家 宝藏入口 机器视觉 机器视觉是使用各种工业相机 结合传感器跟电气信号实现替代传统人工 完成对象识别 计数 测量 缺陷检测 引导定位与抓取等任务 其中
  • Python+flask编写接口实例详解

    环境 Pycharm 其他环境 安装Anaconda 最近在做一个小型项目练手 涉及到大量的IP和相关数据处理 所以选用了Python来处理数据 但是处理完怎么给前端调用呢 今天这篇就是在Python方便地处理完数据后以接口形式把数据返回给
  • 龙芯loongarch64服务器编译安装gcc-8.3.0

    前言 当前电脑的gcc版本为8 3 0 但是在编译其他依赖包的时候 出现各种奇怪的问题 会莫名其妙的中断编译 本地文章讲解如何自编译安装gcc 替换系统自带的gcc 环境准备 下载页面 龙芯开源社区网站 LoongArch GCC 8 3
  • List去重-使用distinctByKey方法根据对象的属性进行去重

    description 使用distinctByKey方法根据对象的属性进行去重 author zs date 2023 12 18 14 29 param keyExtractor return java util function Pr
  • 智汇云舟视频孪生产品矩阵升级 打造视算一体的数字孪生创新应用

    近年来 数字孪生作为数字经济的关键技术 已从浅层次应用 逐渐步入产业发展的 深水区 随着数字孪生技术的发展和应用 单纯的可视化已经不能满足用户需求 以虚拟场景和真实业务数据相结合的虚实融合需求正在成为各行业数字化应用的重点 智汇云舟以视频
  • 【自动化测试】selenium元素定位方式大全!

    前言 当我们在使用selenium进行自动化测试工作时 元素定位是非常重要的一环 因为我们是借助脚本模拟我们通过鼠标和键盘对元素进行点击 输入内容和滑动操作的 所以准确的元素定位是我们执行测试脚本的重要一环 本文就来给大家介绍一下selen
  • 最全测试开发工具推荐(含自动化、性能、稳定性、抓包)

    今天将给大家推荐14款日常工作中经常用到的测试开发工具神器 涵盖了自动化测试 APP性能测试 稳定性测试 抓包工具等 一 UI自动化测试 工具 1 uiautomator2 Github地址 https github com openatx
  • 【博士论文写作 笔记01】绪论的写作

    文章目录 1 1 研究背景与意义 1 2 国内外研究现状 1 3 主要研究内容 1 4 本文组织架构 1 1 研究背景与意义 介绍本文研究的需求 行业现状 首先介绍一下课题涉及的行业是怎样的蓬勃发展 新问题 由于这种蓬勃发展带来了什么样的新
  • 竞赛保研 wifi指纹室内定位系统

    简介 今天来介绍一下室内定位相关的原理以及实现方法 WIFI全称WirelessFidelity 在中文里又称作 行动热点 是Wi Fi联盟制造商的商标做为产品的品牌认证 是一个创建于IEEE 802 11标准的无线局域网技术 基于两套系统
  • 刷完这个笔记,18K不能再少了....

    大家好 最近有不少小伙伴在后台留言 得准备年后面试了 又不知道从何下手 为了帮大家节约时间 特意准备了一份面试相关的资料 内容非常的全面 真的可以好好补一补 希望大家在都能拿到理想的薪资和offer 一般技术面试官都会通过自己的方式去考察你
  • [屏驱相关]【SWM166-SPI-Y1.28C1测评】+ 添加字库,显示文字

    之前已开箱拆解了开发板 需要看内部的请跳转到 SWM166 SPI Y1 28C1测评 开箱及拆解 https bbs 21ic com icview 3343100 1 1 html这次先把内部的图片更新几张看看 打开 红色圈圈内的一定都
  • 大创项目推荐 深度学习 python opencv 火焰检测识别

    文章目录 0 前言 1 基于YOLO的火焰检测与识别 2 课题背景 3 卷积神经网络 3 1 卷积层 3 2 池化层 3 3 激活函数 3 4 全连接层 3 5 使用tens
  • 天猫数据分析-天猫查数据软件-11月天猫平台饮料市场品牌及店铺销量销额数据分析

    今年以来 饮料是快消品行业中少数保持稳定增长的品类之一 11月份 饮料市场同样呈现较好的增长态势 根据鲸参谋电商数据分析平台的相关数据显示 今年11月份 天猫平台上饮料市场的销量为2700万 环比增长约42 同比增长约28 销售额为13亿
  • Python 列表List 整理

    目录 为什么需要列表 列表特点 列表示意图 创建列表 使用中括号创建 使用内置函数创建 内存示意图 删除列表 查询操作 获取单个元素 获取指定元素索引 全列表查找 指定位置查找 获取列表多个元素 切片的范围 Step设定 Step为正数