Python 入门教程(4)数据类型 | 4.6、列表

news2024/9/19 23:49:29

文章目录

  • 一、列表
    • 1、定义
    • 2、创建列表
      • 2.1、使用方括号创建
      • 2.2、使用`list()`函数创建
    • 3、访问列表元素
    • 4、遍历列表
      • 4.1、使用`for`循环直接遍历
      • 4.2、使用`enumerate()`函数遍历
      • 4.3、使用`range()`和`len()`遍历(不推荐,但可行)
    • 5、修改列表
      • 5.1、直接修改列表元素
      • 5.2、添加和删除列表元素
    • 6、常用操作
      • 6.1、切片
      • 6.2、连接与复制
      • 6.3、成员操作符

前言:

在Python中,列表(List)是一种非常重要的数据结构,它用于存储一系列有序的元素。这些元素可以是不同类型的,比如整数、浮点数、字符串,甚至是其他列表(即列表的嵌套)。列表是可变的,意味着我们可以在创建后添加、删除或修改其中的元素。

一、列表

1、定义

列表是由一系列变量组成的可变序列容器,具备下面这些特点:

  • 有序性: 列表中的元素按照插入顺序进行排序,可以通过索引来访问和修改元素。
  • 可变性: 列表是可变的,意味着可以修改列表中的元素,添加新元素或删除现有元素。
  • 动态性: 列表的长度是动态的,可以根据需要动态地扩展和缩小。
  • 可嵌套性: 列表可以嵌套其他列表,形成多维数据结构。

2、创建列表

2.1、使用方括号创建

列表可以使用方括号[]来创建,元素之间用逗号,分隔,例如:

# 创建一个包含不同类型元素的列表  
my_list = [1, "Hello", 3.14, [1, 2, 3]]  
print(my_list) # 输出结果:[1, 'Hello', 3.14, [1, 2, 3]]

2.2、使用list()函数创建

可以使用list()构造函数创建列表,例如:

list2 = list((1, 3.14, ["hello", "world"]));
print(list2) # 输出结果:[1, 3.14, ['hello', 'world']]

注意: 在使用list()函数创建列表时,一定要注意双括号。

3、访问列表元素

列表中的元素可以通过索引来访问,索引从0开始。例如,要访问my_list中的第一个元素,可以使用:

print(my_list[0])  # 输出: 1

如果要访问最后一个元素,可以使用负索引-1,倒数第二个元素则是-2,依此类推。

print(my_list[-1])  # 输出: [1, 2, 3]

4、遍历列表

遍历列表(List)中的元素是一个非常常见的操作。有几种不同的方式可以实现这一点。

4.1、使用for循环直接遍历

这是最直接的方法,使用for循环直接遍历列表中的每个元素。

my_list = [1, 2, 3, 4, 5]  
for element in my_list:  
    print(element)

4.2、使用enumerate()函数遍历

如果需要在遍历列表的同时获取元素的索引和值,可以使用enumerate()函数。

my_list = ['a', 'b', 'c', 'd']  
for index, element in enumerate(my_list):  
    print(f"Index: {index}, Element: {element}")

4.3、使用range()len()遍历(不推荐,但可行)

虽然这不是遍历列表元素的推荐方式(因为它不直接访问元素,而是通过索引),但在某些特定情况下可能会用到。

my_list = ['apple', 'banana', 'cherry']  
for i in range(len(my_list)):  
    print(my_list[i])

5、修改列表

5.1、直接修改列表元素

由于列表是可变的,可以直接修改列表中的元素。例如,将my_list中的第一个元素修改为"Python":

my_list[0] = "Python"  
print(my_list)  # 输出: ['Python', 'Hello', 3.14, [1, 2, 3]]

5.2、添加和删除列表元素

  • 添加元素:
    • 使用append()方法可以在列表末尾添加一个元素。
    • 使用insert(i, x)可以在指定位置i插入元素x。
my_list.append(True)  # 在末尾添加True  
print(my_list)  # 输出: ['Python', 'Hello', 3.14, [1, 2, 3], True]  
  
my_list.insert(1, "World")  # 在索引1的位置插入"World"  
print(my_list)  # 输出: ['Python', 'World', 'Hello', 3.14, [1, 2, 3], True]
  • 删除元素:
    • 使用remove(x)可以删除列表中第一个值为x的元素。
    • 使用pop([i])可以删除并返回列表中指定索引i的元素,如果不指定索引,则默认删除并返回最后一个元素。
    • 使用del语句也可以删除元素。
my_list.remove("Hello")  # 删除第一个'Hello'  
print(my_list)  # 输出: ['Python', 'World', 3.14, [1, 2, 3], True]  
  
print(my_list.pop(1))  # 删除索引为1的元素并打印,即'World'  
print(my_list)  # 输出: ['Python', 3.14, [1, 2, 3], True]  
  
del my_list[0]  # 删除索引为0的元素  
print(my_list)  # 输出: [3.14, [1, 2, 3], True]

6、常用操作

6.1、切片

Python的切片(Slicing)操作是一种强大的工具,用于从序列类型(如列表、元组、字符串、字节序列等)中选取一个范围内的元素。切片操作通过指定开始和结束的索引(以及可选的步长)来工作,返回一个新的序列,其中包含原序列中指定范围内的元素。切片的基本语法如下:

sequence[start:stop:step]
  • sequence 是要进行切片的序列。
  • start 是切片开始的索引(包含)。如果省略,默认为序列的开头。
  • stop 是切片结束的索引(不包含)。如果省略,默认为序列的末尾。
  • step 是切片时跳过的元素数量(即步长)。如果省略,默认为1。

示例代码:

假设有一个列表 my_list:

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

基本的切片操作:

  • 获取前三个元素:my_list[:3] 结果为 [0, 1, 2]
  • 获取从第四个元素到最后一个元素:my_list[3:] 结果为 [3, 4, 5, 6, 7, 8, 9]
  • 获取第三个元素到第六个元素(不包括第六个):my_list[2:6] 结果为 [2, 3, 4, 5]

6.2、连接与复制

与字符串一样,列表之间可以使用+号和*号实现连接和复制,例如:

x = [1, 2]
y = [3, 4]

print(x + y)   # 输出结果:[1, 2, 3, 4]
print(x * 2)   # 输出结果:[1, 2, 1, 2]

6.3、成员操作符

检测一个元素是否存在于列表中,可以使用in关键字,它实际上是一个成员操作符。这个操作符会检查序列(如列表、元组、字符串等)中是否包含指定的元素,如果包含则返回True,否则返回False。例如:

# 定义一个列表  
my_list = [1, 2, 3, 4, 5]  
  
# 使用in操作符检测元素3是否在列表中  
if 3 in my_list:  
    print("元素3在列表中")  
else:  
    print("元素3不在列表中")  
  
# 使用in操作符检测元素6是否在列表中  
if 6 in my_list:  
    print("元素6在列表中")  
else:  
    print("元素6不在列表中")

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

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

相关文章

关于Java数据结构中集合的一个小知识

在我们以后刷题的过程,我们会遇到一些奇怪的集合数据类型。 如下图 这里,我们以顺序表的集合类为例,我们看到上图函数的返回值类型有点奇怪,其实并不奇怪,也就是穿过去的参数类型是一个顺序表的集合类型,也…

Mysql高级篇(中)—— SQL优化

SQL优化 一、SQL优化的计划或思路二、关联查询优化三、子查询优化四、exists 和 not exists1、exists 介绍2、exists 和 not exists 五、单路排序和多路排序(了解)六、排序分组优化1、order by(1)避免临时排序,使用索引排序&#…

【LabVIEW】条件结构的使用

本篇文章记录LabVIEW条件结构的使用方法,希望我的分享能对你有所帮助! 一、实践项目 二、工程详解 1、考虑到输入的数值需要判断一下是否是在0-100之间,故使用“判定范围并强制转换”模块 2、设置数值表示法和上下限 3、验证判断 4、最终程…

(黑马点评)二、短信登录功能实现

2.1 基于传统Session实现的短信登录及其校验 2.1.1 基于Session登录校验的流程设计 2.1.2 实现短信验证码发送功能 请求接口/user/code请求类型post请求参数phone返回值无 /*** 发送手机验证码*/PostMapping("/code")public Result sendCode(RequestParam("ph…

前端框架对比和选择

​ 大家好,我是程序员小羊! 前言: 前端框架选择是前端开发中的关键决策,因为它影响项目的开发效率、维护成本和可扩展性。当前,最流行的前端框架主要包括 React、Vue 和 Angular。它们各有优劣,适用于不同…

wallpaper engine壁纸提取

下载提取软件RavioliGameTools_v2.10.zip https://pan.baidu.com/s/14ZCVw3ucRERsB-GGGoCOqQ 2.运行RExtractor.exe 3.Input file(s)、Output directory填好 4.勾选Allow scanning of unkown files 5.点击Start

智能办公新纪元:AI优秘圈引领未来工作方式

随着人工智能技术的不断进步,它已经开始渗透到我们工作与生活的每一个角落。在这一背景下,AI优秘圈以其创新的智能办公解决方案,正在重新定义企业的工作方式。本文将探讨AI优秘圈如何利用AI技术提升工作效率,降低成本,…

AI换脸等违法行为的最关键原因是个人隐私信息的泄露,避免在网络上发布包含个人敏感信息的照片。

文章目录 引言I 避免在网络上发布包含个人敏感信息的照片不要晒家门钥匙、车牌等照片。不要发布各种票据类的照片不要公布手持身份证或手持白纸照II 相关反制技术的开发和应用III 犯罪案例: 通过“换脸”伪造不雅照当事人犯罪团伙引言 当前AI换脸技术比较成熟,能支持视频通话…

25届和24届一样,涝的涝死旱的旱死

还是秋招 今天无意间翻到一篇帖子: 帖子提到自己的求职经历:想找个产品实习岗,但连实习岗都会要求有相关工作经历... 经典的"蛋生鸡,鸡生蛋"问题。 在经历了完整的秋招后,总的感觉是"涝的涝死&#xff…

基于MATLAB/Simulink的模型降阶方法介绍

降阶建模ROM(Reduced order modeling) 和模型降阶MOR(Model order reduction) 是降低全阶高保真模型的计算复杂性,同时在令人满意的误差范围内保持预期保真度的技术。 模型降阶技术可以解决科学计算邻域在建模仿真与工程应用中的几大痛点: 高保真模型计…

从工厂打螺丝到数据库专家(上)

可能是年纪大了,近期总是失眠!不知为何,这段时间心情烦躁时,特别喜欢听老歌,难道这是中年人的通病:都喜欢怀旧? 在数据库恢复订阅伙伴群,大家经常讨论,总是在回味过去&a…

文心一言 VS 讯飞星火 VS chatgpt (350)-- 算法导论24.1 1题

一、在图 24-4上运行Bellman-Ford算法,使用结点 z z z作为源结点。在每一遍松弛过程中,以图中相同的次序对每条边进行松弛,给出每遍松弛操作后的 d d d值和 π π π值。然后,把边 ( z , x ) (z,x) (z,x)的权重改为 4 4 4&#xf…

面试官:什么是CAS?存在什么问题?

大家好,我是大明哥,一个专注「死磕 Java」系列创作的硬核程序员。 回答 CAS,Compare And Swap,即比较并交换,它一种无锁编程技术的核心机制。其工作方式分为两步: 比较:它首先会比较内存中的某…

汉字转拼音工具类

一,汉字转成拼音大写首字母 public static String chineseToPinyin(String chinese) {//创建一个 StringBuilder 对象用于存储转换后的拼音。StringBuilder pinyin new StringBuilder();//创建一个汉语拼音输出格式对象。HanyuPinyinOutputFormat format new Han…

Redis-01 入门和十大数据类型

Redis支持两种持久化方式:RDB持久化和AOF持久化。 1.RDB持久化是将Redis的数据以快照的形式保存在磁盘上,可以手动触发或通过配置文件设置定时触发。RDB保存的是Redis在某个时间点上的数据快照,可以通过恢复RDB文件来恢复数据。 2.AOF持久化…

MySQL 中的 EXPLAIN 命令:洞察查询性能的利器

《MySQL 中的 EXPLAIN 命令:洞察查询性能的利器》 在 MySQL 数据库的使用中,优化查询性能是至关重要的一项任务。而 EXPLAIN 命令就是我们用来深入了解查询执行计划的强大工具。今天,我们就来一起探讨如何在 MySQL 中使用 EXPLAIN 命令&…

数据结构-3.2.栈的顺序存储实现

一.顺序栈的定义&#xff1a;top指针指向栈顶元素 1.图解&#xff1a; 2.代码&#xff1a; #include<stdio.h> #define MaxSize 10 //定义栈最多存入的元素个数 ​ typedef struct {int data[MaxSize]; //静态数组存放栈中元素int top; //栈顶指针 } SqStack; ​ int…

python mysql pymysql 数据库操作,常用脚本,个人小工具

起因&#xff0c; 目的: 整理 mysql 工具 启动数据库 检查服务器是否启动了: Get-Service -Name ‘mysql*’ 如果没启动的话&#xff0c;那么就启动: net start MySQL80 (最好是开启管理员权限) 1, 日常最常用的&#xff0c;创建连接 --> 查看所有数据库 —> 查看所有…

预处理、makefile、静动态库编写、nfs挂载、快捷命令

c查看预处理后的文件 查看执行后的汇编代码 预处理过程 静态库和动态库 静态库编写 实践 a 动态库生成 查找文件命令 动态库升级 链接的库找不到 命名要为linfun.so 执行时-lfun才能找到 系统会将lfun补充成libfun查找&#xff08;系统默认路径/user/lib/...&#xff09; 链…

C++:string 类详解

目录 简介 使用 初始化(构造函数、拷贝构造函数) 析构函数 赋值运算符重载(operator) 成员常量(npos) 运算符重载[ ](operator[ ]) size() 和 length() 迭代器( begin() 和 end() ) 范围 for 迭代器和范围 for 的比较 反向迭代器( rbegin() 和 rend() ) const 迭…