python列表的基础操作

2023-05-16

python列表的操作

列表是python最为基础的数据结构,极为重要。
这话怎么理解呢?

  1. 是最常用的,想不到其他的,就用列表
  2. 是其他数据结构的基础,可以继承列表然后定义属于自己的数据类型
  3. 是numpy,pandas等数据包的基石,自然也是python人工智能等的根基。

综上需要非常熟悉列表的几乎所有操作。

在这里插入图片描述


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • python列表的操作
  • 前言
  • 一、list的定义
  • 二、list的索引
  • 三、list的增删查改
    • 更新
    • 新增
    • 删除
  • 四,常用的函数操作
  • 五,常用的列表功能
    • 深拷贝和浅拷贝
    • 列表的生成以及遍历
  • 更多的操作


前言

python的list 是非常基础的,相当于cpp的vector的扩展。
显然按秩寻访是最为基本的,然后不一样的在于还有类似链表,栈和队列相似的操作。


一、list的定义

list1 = ['physics', 'chemistry', 1997, 2000]
list2 = [1, 2, 3, 4, 5 ]
list3 = ["a", "b", "c", "d"]

这里需要注意几点

  1. 列表之内的元素不要求同一类型,所以极为方便。这一点很像cpp的struct
    而且还不需要声明类型,所以需要我们记住具体的类型。所以python里面最常见的一种bug
    就是列表传入的数据不是我们想要的类型。或者为空。凡是看到这里的人一定会犯这个错误的,逃不了的!!!
  2. 列表的本质上是容器,最常见的是包含字符串,数字,自定义的对象。
  3. 根据不同编译器,list相邻元素未必是靠在一起的。

二、list的索引

list1 = ['physics', 'chemistry', 1997, 2000]
list2 = [1, 2, 3, 4, 5, 6, 7 ]
# 自然数索引,从前往后,第一个是0
print("list1[0]: ", list1[0])
print("list2[1:5]: ", list2[1:5])
# 支持负数索引,从后往前,最后一个是-1
list[-1]

打印列表的时候回自动添加换行,大部分时候还是比较人性化的。
如果想要去除,查看print的参数。好像是sep。。。

# 直接打印列表
fruits = ['grape', 'apple', 'banana', 'orange', 'pear'] # 打印的结果就是这一行
print('Before modify:\nfruits = '+str(fruits))

我觉得用处不大


三、list的增删查改

更新

list = ['Google', 'Runoob', 1997, 2000]
 
print ("第三个元素为 : ", list[2])
list[2] = 2001
print ("更新后的第三个元素为 : ", list[2])
 
list1 = ['Google', 'Runoob', 'Taobao']
list1.append('Baidu')
print ("更新后的列表 : ", list1)

新增

新增有好几种,如下:

list1 = ['Google', 'Runoob', 1997, 2000]
list2 = ['Google', 'Runoob', 1997, 2000]
# append在末尾插入一个元素
list1.append(obj)
# 在指定位置之后插入元素,比如2就是在位置为2元素后面插入到3的位置(从零开始)。
fruits.insert(2, 'watermelon')
# extend,把list2的内容结合在list1的末尾,最终形成一个列表
list1.extend(list2)
# 和上面等效
list3 = list1+list2

删除

list1 = ['Google', 'Runoob', 1997, 2000]
 
print("原始列表 : ", list1)
del list[2]
print("删除第三个元素 : ", list1)
# pop,删除最后一个并返回
last = list1.pop()
# remove,注意元素一定要存在,而且只会删除第一个匹配到的
list1.remove('Google')

# 清空,会变成[]
list1.clear()

我想说的是,删除会根据位置删除对应的内容。长度也会改变
所以很多时候我们更倾向于给一个空的值或者没有意义的值(null,-1,0),这样长度不会减少
对应位置上的意义也就存在!!!,可以大大降低bug。

另外,千万小心使用remove。如果想去除,我的建议是反过来思考,遍历所有元素,将需要的元素拷贝到新的列表里面。宁可烦一点,也不要整体出现位置bug,具体原因可以百度这么函数。
坑死人不偿命!!!

除非情形比较简单直接删除才是推荐的。


四,常用的函数操作

m = [1,2,3,4,5,6,7]
# 统计该元素的个数
print(m.count(1))
# index,返回的是第一个匹配到的元素的的位置
print(m.index(1))
# 后面的参数划定了搜寻范围
print(m.index(3,2,5))
# sort,默认由大到小
print(m.sort())
print(m.sort(reverse=True))# 由小到大
# max
print(max(m))
# min
print(min(m))
#len
print(len(m))
# 列表的比较,可以自行深入研究
# 导入 operator 模块
import operator

a = [1, 2]
b = [2, 3]
c = [2, 3]
print("operator.eq(a,b): ", operator.eq(a,b)) # False
print("operator.eq(c,b): ", operator.eq(c,b)) # True

五,常用的列表功能

深拷贝和浅拷贝

# 深拷贝
list1 = [1,2,3,4,5]
list2 = list1[:]
#或者
import copy # 需要特定的包
list3 = list1.deepcopy()
# 浅拷贝
list4 = list1
list5 = list1.copy() # 自带的方法是浅拷贝

深拷贝浅拷贝的知识不太适合用python语言来比划。
我的建议是都深拷贝,反正python总是比较耗内存。。。多点少点无所谓啦。。。当然肯定也是优化的一个点啦
如果需要深入理解这个可以参考。
参考

讲的很不错了,但我觉得还不是很直观。
我以后专门写一篇来讲解一下。

列表的生成以及遍历

a = [i for i in range(10)]

b = [1 for i in range(10)]

c = [1]*10
d = []*10 # 不会自动添加null
e = [[]]*10
print(a,b,c,d,e)

结果

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1] 
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1] 
[] 
[[], [], [], [], [], [], [], [], [], []]

我只能说,死记硬背,哈哈哈
在这里插入图片描述

# 遍历
a = [1 for i in range(10)]
for i in a:
	print(i)

list是有for in的迭代器方法的。

更多的操作

基础的知道这些就够了,但是为了面对更复杂的情况。

我们还需要知道更多。过几天我补上一些高级的列表操作的部分。

下次再见,嘿嘿

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

python列表的基础操作 的相关文章

  • Linux上好用的截图工具——flameshot

    我在windows上习惯了QQ的Ctrl 43 Alt 43 A截图 xff0c 在linux也想拥有这样愉快截图的体验 xff0c flameshot无疑是一个比较好的选择 flameshot的功能 xff1a 绘画 直线箭头矩形框实心矩
  • Linux下Zsh安装并配置

    Oh My Zsh 是基于 zsh 命令行的一个扩展工具集 xff0c 提供了丰富的扩展功能 本文使用的乌班图系统版本为16 04 一 下载安装zsh 1 首先点击这里下载最新的zsh源码 然后将源码包复制到 usr local目录下 xf
  • vnc viewe连接,同时ubuntu系统显示灰屏解决方案,不显示命令行和菜单栏解决方法

    span class token number 1 span 在Ubuntu上首先需要安装vnc4server span class token macro property apt get install vnc4server span
  • ROS的可视化工具 rviz 的安装与运行

    1 安装rviz sudo apt get install ros kinetic rviz 然后环境检测 安装 rosdep install rviz rosmake rviz 2 运行rviz 打开一个linux终端 xff0c 输入
  • STM32生成互补PWM波(输出前均为低电平)

    STM32的定时器功能很多 xff0c 今天介绍一下生成互补PWM波形 STM32高级定时器1和8的时钟是168MHZ 通用定时器通常是84MHZ 频率通用设置 定时器时钟频率设置的通用写法 一般我们都是设置两个参数 xff0c 分频系数和
  • 解决ubuntu上的samba共享无法被windows访问问题

    年后回来发现自己ubuntu服务器的samba共享访问不了了 先来看看samba的log记录的啥 root cat var log samba log smbd 2022 02 14 09 19 46 514611 0 lib util f
  • Android仿微信未读消息数提示数字之BadgeView的使用

    没事在整理以前上班收藏的一些笔记 xff0c 发现其中的关键字部分有个 BadgeView 不知道是什么东东 xff0c 于是乎搜了下 xff0c 发现也是一个项目中很常用的功能 比如 xff1a 这样的 xff0c 很常见 这是官方的de
  • cocos creator 游戏背景音乐处理(音乐循环淡入淡出等)

    在处理游戏背景音乐中遇到的问题 xff0c 策划对于音乐播放提出新的想法 但由于目前周围没有人尝试过 xff0c 所以自己摸索的来 需求 在同一场景音乐处理 一般同一场景是同一首背景音乐 现需求在同一场景 xff08 时代 xff09 内播
  • Linux 进程状态D Disk Sleep

    Linux进程状态 xff1a S TASK INTERRUPTIBLE xff0c 可中断的睡眠状态 处于这个状态的进程因为等待某某事件的发生 xff08 比如等待socket连接 等待信号量 xff09 xff0c 而被挂起 这些进程的
  • 两个超实用的 Kubernetes 集群中 Flannel 故障排除案例

    自建的 K8s 集群的坑不少 尤其是到了 Node 数量越来越多之后 问题也逐渐显露了出来 博客主要介绍我们使用flannel之后遇到的两个问题以及解决方案 问题其实不严重 只是涉及到了底层的结构 改动时候要小心 问题 1 flannel
  • 解决zsh: command not found问题

    zsh command not found 看字面意思就是找不到这个方法 xff0c 缺少环境变量配置 1 打开zsh配置文件 open zshrc 2 添加缺少的文件路径 PATH 61 34 Users mengmeng Downloa
  • Python两大爬虫库

    文章目录 Python两大爬虫库urllib库urllib库使用urllib request实验案例 xff1a 模拟头部信息 requests库实验案例 get请求实验案例 抓取网页实验案例 响应 在使用Python爬虫时 xff0c 需
  • amixer命令

    简述amixer及其用法 alsamixer是Linux 音频架构ALSA中的Alsa工具的其中一个 xff0c 用于配置音频的各个参数 alsamixer是基于文本下的图形界面的 xff0c 可以通过键盘的上下键 xff0c 左右键等 x
  • 安装ubuntu系统中磁盘分区

    硬件 xff1a vostro 1450 xff0c 本身有一块机械硬盘HDD xff08 500G xff09 加了一块固态硬盘SSD xff08 120G xff09 xff0c 组成HDD 43 SSD双硬盘 目的 xff1a SDD
  • Could not find encoder for codec id 27: Encoder not found

    在detectron2测试demo时出现如题所示问题 xff0c 解决 xff1a 改 xff1a fourcc 61 cv2 VideoWriter fourcc 34 x264 34 为 xff1a fourcc 61 cv2 Vide
  • Ubuntu查看磁盘使用情况

    xff08 1 xff09 查看文件大小 查看当前文件夹下所有文件大小 xff08 包括子文件夹 xff09 du sh du h 15M package 16K fontconfig 4 0K cache 5 1M rpmdb 20M 查
  • 最简单的方式解决ubuntu 16.04 屏幕亮度问题

    本教程不需要修改grub xff08 因为我的ubuntu 没有 sys class backlight intel backlight brightness 这个目录 xff09 xff0c 我也装过brightness indicato
  • 按列合并两个.txt 文件

    一颗行走的大白菜 转载请标明出处 网上给出了好多答案 xff0c 动辄几十行的python 脚本让人好烦 xff0c 然后我们的linux仅仅需要一条命令就能解决 xff1a 先给出截图 xff1a 我要合并read txt read1 t
  • python: np.pad() 函数的用法

    在卷积神经网络中 xff0c 为了避免因为卷积运算导致输出图像缩小和图像边缘信息丢失 xff0c 常常采用图像边缘填充技术 xff0c 即在图像四周边缘填充0 xff0c 使得卷积运算后图像大小不会缩小 xff0c 同时也不会丢失边缘和角落
  • matlab 如何使用mex

    MATLAB与C语言混合编程接口 MATLAB是一种解释性语言 xff0c 不需要编译 xff0c 调试比较方便 xff0c 但是缺点是速度慢 这一点在执行复杂的科学算法的时候体现极为明显 而C语言虽然相对比 较复杂 xff0c 但是执行效

随机推荐

  • 关于在终端能到import模块 而在jupyter notebook无法导入的问题

    这个问题让我查了许多天才解决 xff0c 为了避免后面的人重复走弯路 xff0c 记录下来 问题描述 xff1a 我在ubuntu 下编译安装了caffe xff0c 在命令行模式下可以import caffe xff0c 但是在jupyt
  • PCA原理

    版权声明 xff1a 本文为博主原创文章 xff0c 未经博主允许不得转载 https blog csdn net zhongkelee article details 44064401 转载请声明出处 xff1a http blog cs
  • 当表格太大超过一栏时

    表格大小的调整 当表格太大超过一栏时 xff0c 可以调节 首先文章导言区加入 usepackage graphicx 然后在要缩小的位置加入语句 resizebox 0 5 textwidth 要缩小的表格 要注意的是要把待缩小的表格放到
  • 安装了keras,报错 importerror: no module named kears

    原因可能如下 xff1a 你使用的python 默认是2 7 或者是3 6 xff0c 而keras 安装到了python3 5或python 3 6 的路径下 xff0c 此时 xff0c 你需要重新安装keras并指定安装路径 可以测试
  • module.exports、exports和export、export default的区别,import和require的区别

    在vue及其他模块化开发中 xff0c 经常会用到这些输出和引用的语句 xff0c 那么 xff0c 怎么在合适的时候用合适的语句呢 xff0c 怎么区分它们呢 xff1f 一 理论区别 首先 xff0c module exports和ex
  • Linux docker 安装

    先执行wget qO https get docker com sh 命令安装docker 执行该命令可能会出现wget命令找不到的问题 xff0c 那我们就先要执行yum install wget 命令安装wget 安装完后就可以使用wg
  • ITK和VTK比较

    概念比较安装步骤遇到的问题 概念比较 基本概念ITK xff08 Insight Segmentation and Registration Toolkit xff09 VTK xff08 visualization toolkit xff
  • 关于12864液晶屏汉字显示问题

    在我们学习或者开发12864显示屏 xff08 带字库 xff09 的过程中 xff0c 可能大家会遇到我这样的情况 如下 xff1a 第三行的 数学 两字显示不出来 xff1f 而第四行却可以 xff0c 为什么 xff1f 答案显而易见
  • IOS10-IOS13屏蔽系统更新描述文件|去除‘设置’①小红点教程

    大家都知道在iPhone系统更新的时候都会提示咱们进行更新 xff0c 但是有些小伙伴不想更新 xff0c 但是不更新有一个小红点1这样人很烦躁 xff0c 对于强迫症的人实在是忍不了 xff0c 今天我就给大家分享一个方法 xff0c 只
  • iOS13屏蔽系统自动更新,去除①红标,这个文件复活了!

    iPhone手机系统每一次发布新版本 xff0c 大家经常会接收到系统自动推送的升级提示 xff0c 经常会在大家不知情的情况下系统就在后台自动把系统升级包给自动下载下来了 xff0c 经常会弹出一个提示窗提醒升级 xff0c 这对于一些不
  • AC代码

    此处省略一万分AC代码 加油咯 xff01 xff01 xff01 代码还是尽量自己写 xff0c 看别人的博客不是不可以 xff0c 看别人的代码也不是不可以 xff0c 如果你不看比人的博客 xff0c 不看别人的代码 xff0c 不看
  • Oracle group by 扩展函数详解(grouping sets、rollup、cube)

    文章目录 1 概述2 分组函数2 1 group by xff1a 一起分组 xff08 1 xff09 2 2 grouping sets xff1a 单独分组 xff08 N xff09 2 3 rollup xff1a 累计累加 xf
  • Oracle 索引详解(index)

    文章目录 1 概述2 索引管理2 1 创建索引2 2 删除索引2 3 修改索引2 4 查询索引 3 索引类型3 1 B Tree 平衡树索引3 2 bitmap 位图索引3 3 反向键索引3 4 基于函数索引 4 扩展4 1 走不走索引的情
  • Windbg调试(使用方法)

    一 Windbg版本信息 Windbg分32位和64位版本 xff0c 32位程序应使用32位Windbg调试 xff0c 64位程序应64位Windbg调试 若想使用64位的Windbg分析32位的程序 使用如下命令进行CPU模式的切换
  • Hi3861开发环境搭建 ||避坑指南|| [适用于几乎所有以Hi3861为主控的开发板]

    Hi3861开发环境搭建 避坑指南 适用于几乎所有以Hi3861为主控的开发板 前言 xff1a 这几天为了搭建Hi3861的开发环境 xff0c 看了不少官方文档和视频 xff0c 但是依然折腾了很久才配置好编译 上传都能正常的环境 xf
  • 论文分享——Bottom-Up and Top-Down Attention for Image Captioning and Visual Question Answering

    文章目录 文章简介1 背景介绍研究背景概念介绍问题描述IC与VQA领域的主要挑战 2 相关研究CNN 43 RNN体系架构Attention mechanismBottom Up and Top Down AttentionBottom U
  • spring mvc 源码分析之父子容器问题

    spring mvc 源码分析 spring mvc 源码分析之父子容器问题 spring mvc 源码分析前言为什么要弄两个ioc容器 xff1f 一个不可以吗存在两个容器 父容器是spring ioc容器自容器是springmvc io
  • C++11特性

    C 43 43 11已经出来很久了 xff0c 网上也早有很多优秀的C 43 43 11新特性的总结文章 xff0c 在编写本博客之前 xff0c 博主在工作和学习中学到的关于C 43 43 11方面的知识 xff0c 也得益于很多其他网友
  • CentOS 7 Squid缓存代理服务器搭建——筑梦之路

    简介 xff1a Squid 是 Linux Unix 平台下最为流行的高性能免费应用层代理服务器 xff0c 它具有权限管理灵活 性能高和效率快的特点 代理服务器可以提供文件缓存 复制和地址过滤等服务 xff0c 充分利用有限的出口带宽
  • python列表的基础操作

    python列表的操作 列表是python最为基础的数据结构 xff0c 极为重要 这话怎么理解呢 xff1f 是最常用的 xff0c 想不到其他的 xff0c 就用列表是其他数据结构的基础 xff0c 可以继承列表然后定义属于自己的数据类