python-基础(4)-list

python专栏地址
上一篇:python-基础(3)-字符串操作

List结构

本节将学习以下内容

  • list初识
  • list的操作

一、List初识

  • 创建
    • 通过[]/list([])创建 ,两者的区别可以参考python中用list和中括号创建列表有什么区别?
    • (在创建时相同,但一个的实质时函数,有转化功能,一个只是一种表示方法。)
  • 特点
    • 任何形式的元素都行
    • 没有长度限制

1、创建

  • 直接创建
# 例1
gufen = []
gufen
[]
# 例2
gufen = [1, 2, "gufen"]
gufen
[1, 2, 'gufen']
  • 通过list([])创建

即给list()函数中传入一个[]

# 例2
gufen = list()
type(gufen)
list
gufen = list([1, 2, 3, 4])
type(gufen)
list
gufen
[1, 2, 3, 4]
gufen[3:100]
[4]

二、List的操作

1、求长度

  • 函数len()
gufen = list([1, 2, 3, 4])
len(gufen)
4

2、+ 和 *

  • +:在一个列表的后面续上另外一个list
a = [123, 456]
b = ["gufeng", "de", "world"]
c = a + b
c
[123, 456, 'gufeng', 'de', 'world']
type(c)
list
  • *:这里说的乘是乘以常数n,也就是把原来的list重复n遍
a * 3
[123, 456, 123, 456, 123, 456]

3、元素引用与切分

python的索引切分,a[m:n]列举出来的是从a[m]到a[n-1]的数

  • 引用
a = [1, 2, 3, 4, 5, 6, 7, 8]
a[1]
2
a[-1]  # -1表示倒数第一个
8
a[-2]
7
  • 切分
a[1:3]  # 表示a[1],a[2]
[2, 3]
a[0:]  # 后面的全部元素
[1, 2, 3, 4, 5, 6, 7, 8]
a[0:1]
[1]
a[:-1]
[1, 2, 3, 4, 5, 6, 7]

4、替换

  • 这里的替换是赋值性的替换
a = [1, 2, 3, 4, 5, 6, 7, 8]
a[0] = 789
a
[789, 2, 3, 4, 5, 6, 7, 8]
a[:] = ["gufen", "world"]
a
['gufen', 'world']

5、删除部分元素

  • 操作语句: del a[]
a = [1, 2, 3, 4, 5, 6, 7, 8]
del a[0]  # 定点删除
a
[2, 3, 4, 5, 6, 7, 8]
del a[3:]  # 范围性删除,3及后面的全部
a
[2, 3, 4]

6、指定元素在list中吗

  • 操作语句 A in B 。A在B中吗
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
8 in a
True
8 not in a
False
gufen = "gufen de world"
"gufen" in gufen
True
type = [30001, 30002, 30003]
for item in type:
    type = str(item)
    if type not in ["30001", "30002"]:
        type = "other"
    print(type)
30001
30002
other
x = 1
y = 3
z = 4
z1 = [x, y, z]
sum(z1)
8

7、list嵌套

  • 这里要注意的是,list的嵌套结构,其引用方式,就像其他语言的多维数组一样
  • 已经几次提到数组了,这里单独解释以下什么是数组。数组其实就是线性代数中的向量。没有嵌套的list就相当于矩阵中的列向量,嵌套的list相当与一个向量组。下面是一个4*5的数组,就是4行5列的。

\begin{matrix} a & b & c & d & e\ f & g & h & i & j \ k & l & m & n & o \ p & q & r & s & t \end{matrix}

a = [1, 2, [3, 4]]
a
[1, 2, [3, 4]]
a[2]
[3, 4]
a[2][0]
3
a[2][1]
4

8、计数与定位

  • count()函数,统计出现的次数
  • index(),获得索引值
tang = ["apple", "banana", "apple", "apple", "banana"]
tang.count("banana")
2
tang = ["apple", "1", "2", "3", "4", "5"]
tang.index("apple")
0
# 没有的元素找不到
tang.index("banana")
---------------------------------------------------------------------------

ValueError                                Traceback (most recent call last)

Cell In[39], line 2
      1 # 没有的元素找不到
----> 2 tang.index("banana")


ValueError: 'banana' is not in list

9、list在数据结构中的基本操作

  • 添加函数 append() 不限制添加元素的树结构

  • 指定位置插入元素 insert(n,list) ,

  • 删除指定元素remove(list)

  • 弹出指定元素pop()

  • list排序sort()

  • 反转reverse()

  • 添加一个普通元素

gufen = []
gufen.append("gufen")
gufen
['gufen']
  • 添加了一个列表
gufen.append(["gufen", "world"])
gufen
['gufen', ['gufen', 'world'], ['gufen', 'world']]
  • 插入
gufen.insert(2, "gufen")  # 指定位置插入
gufen
['gufen', ['gufen', 'world'], 'gufen', ['gufen', 'world']]
gufen.insert(0, "43434")
gufen
['43434', 'gufen', ['gufen', 'world'], 'gufen', ['gufen', 'world']]
  • 删除
    remove
# 默认去掉这个元素的第一个
gufen.remove(['gufen', 'world'])
gufen
['43434', 'gufen', 'gufen', ['gufen', 'world']]
  • 弹出
gufen.pop()  # 默认弹出的是list的最后一个
['gufen', 'world']
# 弹出后会改变原来的list。
gufen.pop(1) 
'gufen'
gufen
['43434', 'gufen']
  • 排序
    • 自己变还是没变,没变的一种是直接调用sort(),不变的是sorted(list)
gufen = [1, 3, 5, 6, 2, 57, 32]
gufen.sort()
gufen
[1, 2, 3, 5, 6, 32, 57]
gufen = [1, 3, 5, 6, 2, 57, 32]
gufen2 = sorted(gufen)
gufen2
[1, 2, 3, 5, 6, 32, 57]
  • reverse取反函数
gufen2.reverse()
gufen2
[57, 32, 6, 5, 3, 2, 1]

python专栏地址
上一篇:python-基础(3)-字符串操作
点个关注呗 🤪😝

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/557823.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法刷题记录2

4.图 4.1.被围绕的区域 思路:图中只有与边界上联通的O才不算是被X包围。因此本题就是从边界上的O开始递归,找与边界O联通的O,并标记为#(代表已遍历),最后图中剩下的O就是:被X包围的O。图中所有…

【Linux】进程和计划任务

目录 一、进程介绍 1.1 进程与线程的定义 1.1.1 进程(Process)** 1.1.2 线程(Thread)** 1.1.3 进程与线程的区别 1.2 进程的特征 1.3 进程状态 1.3.1 进程的基本状态 1.3.2 进程更多的状态 1.4 进程的优先级 1.5 进程间通信 1.6 进程的分类* 二、进程管理 2.1 查看…

java核心类

一,String字符串 1.1,String字符串是引用类型,且不可变 String str1 "Hello";String str2 str1.concat(" World"); // 使用concat方法连接字符串,返回一个新的字符串对象System.out.println(str1); // 输出:Hello,原始…

[大模型]InternLM2-7B-chat langchain 接入

InternLM2-7B-chat langchain 接入 InternLM2 ,即书生浦语大模型第二代,开源了面向实用场景的70亿参数基础模型与对话模型 (InternLM2-Chat-7B)。模型具有以下特点: 有效支持20万字超长上下文:模型在20万…

Hadoop3:大数据的基本介绍

一、什么是大数据 1、大数据的4v特点 Volume(大量) Velocity(高速) Variety(多样) Value(低价值密度) 2、大数据部门间的工作岗位 第三部分,其实就是JavaWeb 二、…

使用TomCat写Film前后端项目04.14

使用TomCat写Film前后端项目源文件0414-CSDN博客 实现功能: 得到数据库所有电影数据在首页显示出来 添加 删除 修改 点击修改,获取编号id,传入到根据id编号查询数据的控制器转发数据到 修改的jsp页面。 获取修改数据传入到根据id修改数据的控…

2024 CKA | 基础操作教程(十五)

题目内容 设置配置环境: [candidatenode-1] $ kubectl config use-context xk8s Task 您必须从 master01 主机执行所需的 etcdctl 命令。 首先,为运行在 https://127.0.0.1:2379 上的现有 etcd 实例创建快照并将快照保存到 /var/lib/backup/etcd-sn…

【QT进阶】Qt Web混合编程之CMake VS2019编译并使用QCefView(图文并茂超详细版本)

往期回顾 【QT进阶】Qt Web混合编程之CEF、QCefView简单介绍-CSDN博客 【QT进阶】Qt Web混合编程之VS2019 CEF的编译与使用(图文并茂超详细介绍)-CSDN博客【QT进阶】Qt Web混合编程之QWebEngineView基本用法-CSDN博客【QT进阶】Qt Web混合编程之VS2019 C…

【C语言——动态内存管理】

一.为什么要有动态内存分配 通过前面的学习我们已经掌握了使用变量和数组来进行内存的开辟。 上面所说的这两种内存的开辟方式有两个特点: 空间开辟的大小是固定的。数组在生命的时候,必须指定数组的长度,数组空间一旦确定了大小就不能再调整…

逆滤波器的推导与实现

设滤波器为,逆滤波器为 根据滤波器和逆滤波器的定义 对上式做傅里叶变换 对上式做逆傅里叶变换可得, 好了,逆滤波器的公式推导完了,但是实际计算时大多数时候这样是算不出来的,除非像扫频或粉噪这样的全频带信号才行&…

C盘越用越大?教你如何科学管理C盘空间

前言: 如图,左边是我多开的E5电脑,装的是LTSC2019_210707F多开封装版,C盘占用8.5GB,右边是我平常打游戏写代码的电脑,装的是Win11 22H2,C盘占用30GB。两台电脑都关闭了休眠,C盘的虚拟…

logisim 图解超前进位加法器原理解释

鄙人是视频作者,文件在视频简介的网盘链接。 找规律图解超前进位加法器与原理解释_哔哩哔哩_bilibili 一句话就是“把能导致进位到这个位置的情况全都穷举一遍。” 穷举情况看图中算式。 视频讲解比较啰嗦。

LLM padding left or right

参考博客: 大部分的大模型(LLM)采用左填充(left-padding)的原因 注:文章主要内容参考以上博客,及其评论区,如有侵权,联系删除。 最近在看大模型相关内容的时候,突然想到我实习时候一直一知半解的问题&…

经典网络解读—IResNet

论文:Improved Residual Networks for Image and Video Recognition(2020.4) 作者:Ionut Cosmin Duta, Li Liu, Fan Zhu, Ling Shao 链接:https://arxiv.org/abs/2004.04989 代码:https://github.com/iduta…

Ubuntu22.04.4 - 网络配置 - 笔记

一、设置固定ip 1、cd /etc/netplan 查看文件夹下的配置文件 我这里叫 00-installer-config.yaml 2、sudo nano /etc/netplan/00-installer-config.yaml 完成配置后,按下Ctrl O保存更改,然后按下Ctrl X退出nano编辑器。 3、sudo netplan apply 4、ip …

C++ 继承(一)

一、继承的概念 继承是面向对象编程中的一个重要概念,它指的是一个类(子类)可以从另一个类(父类)继承属性和方法。子类继承父类的属性和方法后,可以直接使用这些属性和方法,同时也可以在子类中…

springboot+vue全栈开发【2.前端准备工作篇】

目录 前言准备工作Vue框架介绍MVVM模式 快速入门导入vue在vscode创建一个页面 前言 hi,这个系列是我自学开发的笔记,适合具有一定编程基础(html、css那些基础知识要会!)的同学,有问题及时指正!…

语雀如何显示 Markdown 语法

正常的文章链接 https://www.yuque.com/TesterRoad/t554s28/eds3pfeffefw12x94wu8rwer8o 访问后是文章,无法复制 markdown 的内容 在链接后增加参数 /markdown?plaintrue&linebreakfalse&anchorfalse 直接显示代码

ros2 RVIZ2 不显示urdf模型

ros2 RVIZ2 不显示urdf模型 我的情况是 : 没有如何报错但是不显示 Description Topic 手动写上 /robot_description

python使用tkinter和ttkbootstrap制作UI界面(二)

这次讲解UI界面常用的主键,延续上文的框架进行编写,原界面如下: Combobox组件应用(下拉框) """Combobox组件"""global comvalue_operatorcomvalue_operator tk.StringVar()value_ope…