Python数据容器——列表(list)

数据容器入门

Python中的数据容器:
一种可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素
每一个元素,可以是任意类型的数据,如字符串、数字、布尔等。

数据容器根据特点的不同,如:是否支持重复元素,是否可以修改,是否有序,等
分为5类,分别是:
列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)

数据容器:

1、List(列表)入门

1、list(列表)就是C语言里的数组。

字面量:[元素1,元素2,元素3]

定义变量:变量名称 = [元素1,元素2,元素3]

定义空列表:

变量名称 = []     或      变量名称 = list()

元素可以是不同类型。例如:

list1 = ['Hello', 111, True]

2、列表可以嵌套:

list2 = [['Hello', 111, True], ['world', 222, False]]

3、可以使用列表的下标索引从列表中取出元素

list1 = ['Hello', 111, True]
print(list1[0]) # 输出Hello
print(List[-1]) # 反向索引,输出 True,从-1开始,依次递减  -1,-2……list2 = [['Hello', 111, True], ['world', 222, False]]
print(list2[1])
print(list2[0][1])"""
输出结果:
['world', 222, False]
111
"""

4、列表的常用方法(操作)

插入元素、删除元素、清空列表、修改元素、统计元素个数
等等功能,这些功能我们都称之为:列表的方法

在Python中,如果将函数定义为class(类)的成员,那么函数会称之为:方法

class Student:def add(self,x,y):return x+y

方法和函数功能一样,有传入参数,有返回值,只是方法的使用格式不同,只有这一点不同:
函数的使用:num add(1,2)
方法的使用:student = Student() 

                      num = student.add(1,2)

列表内部提供了很多方法:注意:方法后是小括号()

方法功能或注意点

查找:  列表名.index(元素)

查找指定元素在列表的下标

如果找不到,报错ValueError

修改:列表名[下标] = 值是重新赋值,“列表名[下标] = 值”中的值会替换原来的值

插入:

列表名.insert(下标,元素)

是在指定的地方插入指定的元素,“列表名.index(下标,元素)”就是在该下标下插入该元素。
需要注意的是:

1、这里是insert,不是index。

2、插入后,后面的元素会后移,而不是被替换掉。

3、是小括号,不是中括号。

追加:

单个元素:

列表名.append(元素)

列表名.extend(其他数据容器)

append()是将指定元素追加到列表的尾部。

extend()是将其他数据容器的内容取出,依次追加到列表尾部。

通过指定下标来删除:

1、del  列表名[下标]

2、列表名.pop(下标)

通过指定元素来删除:

列表名.remove(元素)

通过指定元素来删除时,是删除某元素在列表中的第一个匹配项

清空列表:

列表名.clear()

结果:[]

统计某元素在列表内的数量:

列表名.count(元素)

不可以查询到表中表的内容。
统计列表长度
len(列表名)

例如:

# 查询方法
list1 = ["Hello", "World", "!"]
index = list1.index("Hello")
print(index)
# 输出结果:0 (这表明是正向的索引)list2 = [["Hello", 111, True], ['world', 222, False]]
index = list2.index("Hello")
print(index)
# 输出:ValueError: 'Hello' is not in list
'''
要查找的元素 "Hello" 是一个字符串,
而列表中的元素是嵌套列表。
在这种情况下,需要使用循环来遍历列表
并检查子列表中的元素。
否则会报错。
修正后:↓
'''
for i in range(len(list2)):if "Hello" in list2[i]:index = ibreak
print(index)
# 输出结果:0
# 修改元素值
list1 = ["Hello", "World", "!"]
list1[1] = "Python"  # 正向下标
list1[-1] = "~"   # 反向下标
print(list1)
# 输出结果:['Hello', 'Python', '~']
# 插入元素值
list1 = ["Hello", "World", "!"]
list1.insert(1,"Python")
list1.insert(-1, "~")
print(list1)
# 输出结果:['Hello', 'Python', 'World', '~', '!']
# 追加元素
list1 = ["Hello", "World", "!"]
list1.append("~")
print(list1)
# 输出结果:['Hello', 'World', '!', '~']list2 = [1, 2, 3]
list2.append([4, 5, 6])
# list2.append(7, 8) #这个会报错,只能追加单个元素的方法
print(list2)
# 输出结果:[1, 2, 3, [4, 5, 6]]list2.extend(list1)  # 追加其他数据容器
print(list2)
# 输出结果:[1, 2, 3, [4, 5, 6], 'Hello', 'World', '!', '~']
# 通过指定下标来删除元素
list1 = ["Hello", "World", "!"]
list2 = [1, 2, 3]del list1[0]
element = list2.pop(0)  # 用element来接受删点的元素print(list1)  # 输出结果:['World', '!']
print(list2)  # 输出结果:[2, 3]
print(element)  # 输出结果:1# 通过指定元素来删除
list3 = [1, 1, 2, 3]
list3.remove(1)
print(list3)  # 输出结果:[1, 2, 3]
# 清空列表
list3 = [1, 1, 2, 3]
list3.clear()
print(list3)  # 输出结果:[]
# 统计元素1的个数
list3 = [1, 1, 2, 3]
count = list3.count(1)
print(count)  # 输出结果:2
# 统计列表长度
print(len(list3))  # 输出结果:4
# 综合训练
list5 =[21, 25, 21, 23, 22, 20]list5.append(31)  # 追加一个数字31到列表的尾部
list5.extend([29, 33, 30])  # 追加一个新列表[29,33,30]到列表的尾部
num1 = list5[0]  # 取出第一个元素(应是:21)
num2 = list5[-1]  # 取出最后一个元素(应是:30)
index = list5.index(31)  # 查找元素31所在的位置print(f"追加一个数字31到列表的尾部后的list5是:{list5}")
print(f"追加一个新列表[29,33,30]到列表的尾部后list5是:{list5}")
print(f"取出的第一个元素是: {num1}")
print(f"取出最后一个元素是: {num2}")
print(f"元素31所在的位置是: {index}")"""
输出结果:
追加一个数字31到列表的尾部后的list5是:[21, 25, 21, 23, 22, 20, 31, 29, 33, 30]
追加一个新列表[29,33,30]到列表的尾部后list5是:[21, 25, 21, 23, 22, 20, 31, 29, 33, 30]
取出的第一个元素是: 21
取出最后一个元素是: 30
元素31所在的位置是: 6
"""


2、1ist(列表)的遍历

列表的遍历有两种:使用while循环,遍历列表的元素和使用for循环,遍历列表的元素。

while循环:

index = 0

while index < len(列表名):

        元素 = 列表名[index]

        其他处理……

        index += 1  #最关键的一步,千万别忘记。

除了while:循环外,Python中还有另外一种循环形式:for循环。
对比while,for循环更加适合对列表等数据容器进行遍历。

for 临时变量 in 数据容器:

        对临时变量进行处理

for循环中,会把取出的变量赋值给临时变量

# 通过while来完成列表的遍历
list3 = [1, 1, 2, 3]
print("列表的元素值是:", end=" ")index = 0  # 从0下标开始遍历
while index < len(list3):element = list3[index]  # 取出index下标对应的元素print(element, end=" ")index += 1  # 千万别忘了这一点,循环的关键;python里不支持index++
#  输出结果:列表的元素值是: 1 1 2 3
print()# 通过for来完成列表的遍历
for element in list3:print(f"列表的元素有:{element}")list4 = [["Hello", 111, True], ['world', 222, False]]
"""
输出结果:
列表的元素有:1
列表的元素有:1
列表的元素有:2
列表的元素有:3
"""

两者之间比较:
while循环和for循环,都是循环语句,但细节不同:
·在循环控制上:
while循环可以自定循环条件,并自行控制
for循环不可以自定循环条件,只可以一个个从容器内取出数据


·在无限循环上:
while循环可以通过条件控制做到无限循环
for循环理论上不可以,因为被遍历的容器容量不是无限的

在使用场景上:
while循环适用于任何想要循环的场景
for循环适用于逾历数据容器的场景或简单的固定次数循环场景​​​​​​​

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Wordpress升级版本后插件和主题常见出错及处理方法整理【持续更新】

Wordpress报错怎么解决&#xff1f; 一般常用的排查方法&#xff1a; 暂时禁用所有插件&#xff1b;将主题更改为默认主题&#xff1b; 修改wp-config.php文件&#xff1b;更新固定链接设置&#xff0c;确保设置正确&#xff1b;检查.htaccess文件是否存在且是否可写&#xf…

QtAV for ubuntu16.04

下载ubuntu https://releases.ubuntu.com/16.04/ubuntu-16.04.7-desktop-amd64.iso 下载ffmpeg https://ffmpeg.org/download.html 下载QtAV https://github.com/wang-bin/QtAV/releases 更新 sudo apt update 安装库 sudo apt-get install libglu1-mesa-dev freeglut3-dev…

ETHERCAT转PROFIBUS连接到300plc的配置方法

由于捷米JM-DP-ECT&#xff0c;是自主研发的一款PROFIBUS从站功能的通讯网关&#xff0c;它的主要功能是将ETHERCAT设备接入到PROFIBUS网络中生产环境比较复杂有多个设备采用不同的协议这极大的阻碍了&#xff0c;各个设备的数据互通。 JM-DP-ECT这个小小的网关可不简单&#x…

SpringCloud项目打包注意事项以及可能出错的几种情况

SpringCloud项目打包注意事项和可能出错的几种情况 1、检查子模块中的 parent的pom文件路径 \<relativePath/\>2、检查打包插件的位置3、检查module是否重复引用 欢迎访问我的个人博客&#xff1a;https://wk-blog.vip 1、检查子模块中的 parent的pom文件路径 <relat…

Hive常见面试题

Hive的基本概念 什么是Hive&#xff1f;它的主要作用是什么&#xff1f; Hive是一个基于Hadoop生态系统的数据仓库和数据处理工具。 它提供了类似于SQL的查询语言&#xff08;HiveQL&#xff09;&#xff0c;使用户能够使用SQL语句来查询和分析 大规模存储在Hadoop集群上的数…

【计算机视觉|风格迁移】PP-GAN:使用GAN的地标提取器将韩国人像的风格转化为身份证照片

本系列博文为深度学习/计算机视觉论文笔记&#xff0c;转载请注明出处 标题&#xff1a;PP-GAN : Style Transfer from Korean Portraits to ID Photos Using Landmark Extractor with GAN 链接&#xff1a;[2306.13418] PP-GAN : Style Transfer from Korean Portraits to ID…

漫画 | TCP/IP之大明邮差

后记&#xff1a; 1973年&#xff0c;卡恩与瑟夫开发出了网络中最核心的两个协议&#xff1a;TCP协议和IP协议&#xff0c;随后为了验证两个协议的可用性&#xff0c;他们做了一个实验&#xff0c;在多个异构网络中进行数据传输&#xff0c;数据包在经过近10万公里的旅程后到达…

射影平面 与 射影变换

射影平面 与 射影变换 射影平面 与 齐次坐标 中心为O 的把 将与一个点O 关联的所有平面和直线构成的集合称为 中心为O的把O[\lambda, p]射影&#xff08;从平面\pi 到把O的一个对应关系&#xff09;O[P, l] [OP, OL] ...截影&#xff08;从把O 到平面\pi 的一个对应关系&…

laravel安装composer依赖

一.问题描述 拉取的新项目没有依赖 项目根目录没有vendor目录 报错 二.安装composer,拉取依赖 1.如果没有composer先去下载 官网地址:Packagist / Composer 中国全量镜像 我的博客安装composer:composer最新版本安装_荒-漠的博客-CSDN博客 2.进入项目根目录cmd或者在项目中…

【云原生】详细学习Docker-Swarm部署搭建和基本使用

个人主页&#xff1a;征服bug-CSDN博客 kubernetes专栏&#xff1a;云原生_征服bug的博客-CSDN博客 目录 Docker-Swarm编排 1.概述 2.docker swarm优点 3.节点类型 4.服务和任务 5.路由网格 6.实践Docker swarm 1.概述 Docker Swarm 是 Docker 的集群管理工具。它将 Doc…

PHP国外在线教育系统源码 在线课程系统源码 直播课程系统源码提供在线课程,现场课程,测验

Proacademy是在线教育一体化的解决方案&#xff0c;用于创建类似于Udemy、Skillshare、Coursera这种在线教育市场。 这个平台提供在线课程&#xff0c;现场课程&#xff0c;测验等等&#xff0c;并有一个基于实际业务需要的高级认证插件&#xff0c;程序基于Laravel强大的安全框…

全球公链进展| 2023/8/7

一周速览 过去一周&#xff0c;明星项目动态如下&#xff1a; 以太坊核心开发者共识会议决定推迟发布Devnet #8 BNB Chain 发布主网 v1.2.9 版本以及v1.2.10 版本 Arbitrum 已在主网激活对账户抽象端点的支持 Sui 主网升级至 V1.6.3 版本 Aptos 推出 Move v1.4 和 v1.5 …

MySQL 表约束超详细

目录 一. 主键约束——PRIMARY KEY 1.在建表时设置主键约束 设置单字段主键 设置联合主键 2. 在修改表的时候添加主键约束 3. 删除主键约束 4. 【补充】 MySQL设置主键自增长 &#xff1a; 二. 外键约束——FOREIGN KEY 1.在创建表时设置外键约束 2. 在修改表时添加外…

【排序算法略解】(十种排序的稳定性,时间复杂度以及实现思想)(含代码)(完工于2023.8.3)

文章目录 1、冒泡排序/选择排序/插入排序冒泡排序(Bubble Sort)选择排序(Selection Sort)插入排序(Insertion Sort) 2、希尔排序(Shells Sort)3、快速排序(Quick Sort)4、堆排序(Heap Sort)5、归并排序(Merge Sort)6、桶排序/计数排序/基数排序桶排序(Bucket sort)计数排序(Cou…

【sklearn】回归模型常规建模流程

模型训练pipeline 基于数十种统计类型特征&#xff0c;构建LR回归模型。代码逻辑包含&#xff1a;样本切分、特征预处理、模型训练、模型评估、特征重要性的可视化。 步骤一&#xff1a;导入所需库 import pandas as pd import numpy as np import matplotlib.pyplot as plt…

用P2PNet进行大豆计数

文章目录 介绍在大豆数据集上可视化结果环境准备数据集结构数据链接模型训练模型推理代码介绍 这个仓库包含了P2PNet(Rethinking Counting and Localization in Crowds: A Purely Point-Based Framework)在大豆数据集上的pytorch实现。 在大豆数据集上可视化结果 环境准备 …

php meilisearch demo

# 创建一个meilisearch 使用完自动销毁 docker run -itd --rm -p 7700:7700 getmeili/meilisearch:v1.3docker-compose 参数 version: "3" networks:flyserver:driver: bridge services:search:image: getmeili/meilisearch:v1.3restart: alwaysenvironment:- MEILI…

分享一个霓虹灯拨动开关

先看效果&#xff1a; 再看代码&#xff08;查看更多&#xff09;&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title> 霓虹灯拨动开关</title><style>* {border: 0;box-sizin…

算法-链表树

链表 反转单向链表 该题⽬来⾃ LeetCode&#xff0c;题⽬需要将⼀个单向链表反转。思路很简单&#xff0c;使⽤三个变量分别表示当前节点和当前节点的前后节点&#xff0c;虽然这题很简单&#xff0c;但是却是⼀道⾯试常考题 var reverseList function(head) { // 判断下变…

WSL安装

WSL安装 1.Microsoft store 安装 1.1 启动WSL功能 在【程序和功能 -> 启用或关闭 Windows 功能】中勾选【适用于 Linux 的 Windows 子系统】 1.2 Store中下载安装 在 Microsoft Store 中下载并安装需要的 Linux 发行版 2.不使用Store安装WSL 注&#xff1a;1.1也要…