python列表的基础操作

article/2025/5/11 1:42:15

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 operatora = [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的迭代器方法的。

更多的操作

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

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

下次再见,嘿嘿


http://chatgpt.dhexx.cn/article/Z3DWnXEO.shtml

相关文章

python教程:12种列表常用操作方法

都是基础知识,长久不用就会忘,温故知新,又来学习学习。相信很多人在编程的或者对一些程序处理的思维会用到,比如面试 (有写的不对的地方也请大家指正~ 一、列表定义 列表是一个有序且可更改的集合。在Pyth…

python教程 列表list操作

python的列表 一、常用操作1、创建列表2、索引操作 二、列表的增删改查1、增加 一、常用操作 1、创建列表 list1 [] #创建一个空列表 list2 [1, 2, 3, 4, 5, -1] #创建一个数字型列表 list3 [“a”, “q”, “w”, “s”, “d”, “f”, “e”] #创建一个字符型列表 li…

Python列表操作详解

目录 前言: 1、列表的创建与删除 1.1 创建有两种方式 1.2 列表特点: 2、列表的查询操作 2.1 给元素查索引 2.2 给索引查元素 2.3 获取列表中多个元素 2.4 使用循环遍历列表 3、列表元素的增,删,改 3.1 增添元素&…

Python中列表的常用操作

1、列表的格式:变量A的类型为列表 namesList [xiaoWang,xiaoZhang,xiaoHua] 比C语言的数组强大的地方在于列表中的元素可以是不同类型的 比如:testList [1, a] 2、打印出列表的数据 一、列表的循环遍历 1、for循环遍历 2、while循环遍历 二、列表的添…

找出数组中其中最大的数及其下标

1、在一个有8个整数(18,25,7,36,13,2,89,63)的数组中找出其中最大的数及其下标。 代码如下: public static void main(String[] args) {int[] a new int[]{18,25,7,36,13,2,89,63};int x 0; //局部变量需要初始化int max a[0];//假设a[0…

海量数据处理 大量数据中找出最大的前10个数 (Top K 问题)

在工作中我们常遇到此类问题,从一个大量甚至海量的数据中取出前几个大的数。必须在海量的文章中取出点击量最大的10篇文章。 此类问题其实就是Top K问题。 给定一个数据(数据量海量 N),想找到前 K 个最大的或最小的元素。 eg&…

利用指针找最大值

利用指针找数组中最大的值 实现的方法很简单&#xff0c;输入完了以后在进行循环判断&#xff0c;遍历数组在使用一个值专门来记数组最大值的下标就可以了&#xff0c; #include <stdio.h> #include <Windows.h>#define MAX 10 int main(void) {int w 0, a[MAX]…

编写一个Java应用程序,产生20个50-100之内的整数,并输出这20个数并找出最大数及最小数输出

思路&#xff1a; 首先调用random()方法产生随机数&#xff0c;用数组存储&#xff0c;然后用两个for循环求出其中的最大值和最小值&#xff0c;最后打印输出这两个最值。 代码实现&#xff1a; public class Test {public static void main(String args[]){int a[] new int…

编写一个Java应用程序,产生20个50-100之内的整数,并输出这20个数并找出最大数及最小数输出。

编写一个Java应用程序&#xff0c;产生20个50-100之内的整数&#xff0c;并输出这20个数并找出最大数及最小数输出。 (1)思路 定义一个start变量和end变量表示范围的起点和终点&#xff0c;分别赋值为50和100&#xff0c;利用random.nextInt&#xff08;end-start1&#xff0…

分别用函数和带参的宏,从3个数中找出最大数

分别用函数和带参的宏&#xff0c;从3个数中找出最大数 区分好函数和宏的区别&#xff0c;其各自不同的编写格式。 用函数实现如下&#xff1a; #include<stdio.h> int main() {int max(int a,int b);int a,b,c,m;printf("输入三个整数&#xff1a;\n");sca…

任意输入10个数,找出最大数和最小数。

任意输入10个数,找出最大数和最小数。 #include <stdio.h> int main () {int i,max,min;printf("输入数字:");scanf("%d\n",&max);//先输入一个数字当作最大值for(i1;i<9;i)//10-19&#xff0c;循环9次之后得到结果{scanf("%d",&a…

图解|查找数组中最大值的5种方法!

作者 | 王磊 来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09; 转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09; 我们在一些特定场景下&#xff0c;例如查询公司员工的最高薪资&#xff0c;以及班级的最高成绩又或者是面试中都会遇到查…

4-封装axios

源码github连接&#xff1a;baojinghui/MyAxios (github.com) 1&#xff0c;为什么要封装axios &#xff0c;因为当一个库不维护时&#xff0c;便于在封装的地方把不维护的库替换掉 2&#xff0c;因为axios返回的是一个实例对象&#xff0c;所以只能这一个实例上修改。但是我…

详解axios(快速入门)

axios这一篇就够啦~ axios1、axios的理解和使用1.1 axios概述1.2 axios特点1.3 axios常用语法1.4 难点语法的理解和使用 2、axios源码分析2.1 源码目录结构2.2 源码分析 axios 1、axios的理解和使用 1.1 axios概述 前端最流行的ajax请求库 react/vue官方都推荐使用axios 发a…

axios快速上手(简单使用)

axios对ajax请求进行了封装&#xff0c;并且使用promise的链式调用使得网络请求的代码逻辑更为清晰&#xff0c;同时支持async和await的编写方式使代码看起来像同步&#xff0c;更加方便于理解和阅读。axios这个库的体积也不大&#xff0c;先在项目里进行安装&#xff0c;npm i…

numpy的使用说明(六):一招帮你彻底搞懂axis=0和axis=1

1、关于axis轴的说明 思考&#xff1a;给你一个三维数组&#xff0c;你知道如何设置axis轴的值吗&#xff1f;下面这张图展示的结果你知道怎么来的吗&#xff1f;这些疑问都会在文中给你一一解答。 2、什么是维度&#xff1f; 举例说明 3、什么是高维&#xff0c;什么是低维…

axios(1)

json-server的介绍与服务搭建 作用 快速创建一个接口&#xff0c;以供Ajax请求 安装及使用 第三步&#xff08;注意路径以及在运行代码前加上npx&#xff09; axios的介绍与页面配置 在项目中 1.$ npm install axios 2.$ yarn add axios 学习阶段使用CDN方式 <scrip…

一文读懂Numpy(Tensorflow)里面的轴(Axis)

目录以及结论 Axis就是数组层级设axisi&#xff0c;则Numpy沿着第i个下标变化的方向进行操作Axis的应用 Axis就是数组层级 要想理解axis&#xff0c;首先我们先要弄清楚“Numpy中数组的维数”和"线性代数中矩阵的维数"这两个概念以及它们之间的关系。在数学或者物…

axios基础(一)

1.封装 最简单的封装&#xff08;这个了解下就行&#xff0c;主要看下下面&#xff09; <button onclick"testPost()">发送POST请求</button><script>function testGet(){axios({url:"https://api.hh2022.cn/main/searchPage/2023/1/5"…

Axios的简单学习(一文上手Axios!)

页内目录 一&#xff0c;Axios的介绍 二&#xff0c;Axios的配置 三&#xff0c;Axios的基本格式 四&#xff0c;使用Axios获取数据 一&#xff0c;Axios的介绍 官方介绍 Axios 是一个基于 promise 的 HTTP 库&#xff0c;可以用在浏览器和 node.js 中&#xff0c;在Vue中官方…