Python基础学习笔记(六)——列表

目录

  • 一维列表
    • 1. 索引的查询与返回
    • 2. 切片
    • 3. 添加元素
    • 4. 删除元素
    • 5. 更改元素
    • 6. 排序
    • 7. 生成式

一维列表

  列表,也称数组,是一种有序、可变、允许重复元素的组合数据结构,属于可变序列,由方括号[]内、用逗号分隔的一组元素组成。

  列表可存储多个元素以方便对一组数据整体操作。不同的列表的内存地址互不相同,即id独立。

  列表有两种创建方式:直接将目的列表赋予变量,称为赋值创建;使用list()函数将任意组合数据类型转化为列表,称为引用创建

  下文的列表均指一维列表

# 赋值创建
lst = [1, 2, 3]
# 引用创建(字典转列表):转化前后元素不变
lst = list({'1': 'a', '2': 'b', '3': 'c', })
print(lst, type(lst), id(lst))
[1, 2, 3] <class 'list'> 1937556730752

  列表的元素可以是任意数据类型的对象引用,也就是一维指针。所以列表实际上是一种二维指针,用于存储一维指针。

  在Python中,通常不采用这种描述,因为Python不支持指针的直接操作。但是,列表的索引可以模拟二级指针。

1. 索引的查询与返回

  索引描述了序列中的元素的位置,是用于访问元素的操作方法,分为正数索引负数索引

  序列中的元素从左到右的正数索引依次为0, 1, 2, ... , n从右到左的负数索引依次为-1, -2, ... , -n

  可以通过查询索引获取对应元素的值

lst = [1, 2, 3]
print(lst[0], lst[-3])
1 1

  也可以使用index()函数,通过元素的值返回对应的正数索引。若列表存在相同的元素,只返回最小的正数索引;若列表不存在对应的元素,报错ValueError.

  index(arg1, arg2=0, arg3=len(list))限定索引区间默认步长为1,开始索引为0,结束索引为列表长度(元素个数),区间形式与range函数相似,即左闭右开

  若arg3未传递,传递了负数,或者传递了小于arg2的值,则参数arg3无效,函数功能为:返回索引为arg2上的指定元素的正数索引。一般不会用到该功能。特别的,若arg2=arg3,一定会报错,因为索引区间为空。

lst = ['1', '2', '3', '4', '1']
# index(element):返回指定元素的索引
print(lst.index('1'))
# index(element, index):返回限定位置上的指定元素的索引
print(lst.index('1', 4))
# index(element, start, stop):返回限定位置区间上的指定元素的索引
print(lst.index('1', 1, 5))
0
4
4


2. 切片

  切片是指获取列表中的子列表,是访问列表中的多个元素的一种方式,其结果是原列表片段的拷贝

  list[start=0:stop=-1:step=1],就是将整数序列range(start,stop,step)作为从原列表所取元素的索引,获取并拷贝这些元素,然后返回一个具有新id的子列表。
  其参数默认值与range类似。特别的,若startstop负数索引,则先转化为正数索引,再遵循range对应。

lst = [1, 2, 3, 4, 5, 6]
print(lst[1:5:2], lst[1:-1:2])
print(id(lst), id(lst[1:5:2]))

# 第一个冒号不能省略,第二个可以省略
print(lst[1:5], lst[1::2], lst[:5:2])
print(lst[1:], lst[:5], lst[::2])
[2, 4] 				 [2, 4]
1383891593536 1383891563392

[2, 3, 4, 5] 		 [2, 4, 6] 			 [1, 3, 5]
[2, 3, 4, 5, 6] 	 [1, 2, 3, 4, 5] 	 [1, 3, 5]


3. 添加元素

  append(element)函数:在列表末尾添加一个元素
  extend(composition)函数:在列表末尾依次添加一个组合内的元素
  insert(index, element)函数:在指定索引插入一个元素,后续元素索引+1.

  上述的函数没有返回值,也就是说它们的操作是在原列表上进行的,但列表的id仍会改变。

  +运算可以替代extend()函数,但列表没有被分配-运算。

lst = list([1, 2])
# 不能将组合内的元素加入列表
lst.append([3])
print(lst)

# 集合是无序组合,添加次序遵循特殊的哈希映射
lst.extend({5, 4})
print(lst)

# 也可以简化为赋值运算
lst += (6, 7)	# 元组,一种序列,属于组合类型
print(lst)

# 负数索引视为正数索引输入
lst.insert(-7, '0')
print(lst)
[1, 2, [3]]
[1, 2, [3], 4, 5]
[1, 2, [3], 4, 5, 6, 7]
['0', 1, 2, [3], 4, 5, 6, 7]


4. 删除元素

  remove(element)函数:删除一个指定元素,若存在重复元素,取最小正数索引。
  pop(index=-1)函数:删除一个指定索引上的元素,参数默认值为-1.
  clear()函数:清空列表中的所有元素
  del语句可以删除一个指定索引上的元素,也可以删除指定切片范围内的元素,甚至删除列表本身

lst = list([1, 2, 3, 4, 5])
lst.remove(5)
print(lst)

lst.pop(0)
print(lst)
lst.pop()
print(lst)

lst.clear()
print(lst)

lst = list([1, 2, 3, 4, 5])
del lst[0]
print(lst)

del lst[1:]
print(lst)

del lst
print(lst)
[1, 2, 3, 4]
[2, 3, 4]
[2, 3]
[]

[2, 3, 4, 5]
[2]
NameError: name 'lst' is not defined.


5. 更改元素

  列表元素的更改主要通过索引查询切片替换,它们的功能与上述的添加和删除有所重叠。

  索引查询不仅能获取指定索引上的元素的值,也可以对它进行修改;切片替换可将切片内的元素依次替换为一个组合内的元素。当切片步长为1时,组合的元素数量不受限制;否则,切片的元素个数须等于组合的元素个数

lst = list([1, 2, 3, 4, 5])
# 逐个修改
lst[0] = 0
print(lst)

# 批量修改
lst[1:3] = [10, 20, 30, 40]
print(lst)

# 批量删除
lst[1:5] = []
print(lst)

# 跳跃替换
lst[::2] = 'ab'
print(lst)
[0, 2, 3, 4, 5]
[0, 10, 20, 30, 40, 4, 5]
[0, 4, 5]
['a', 4, 'b']


6. 排序

  sort(reverse=False)是一个无返回值函数,参数默认值为升序排列,可以对列表内的元素进行排序。对于基本数据类型的元素,数值类型可以互相排序,字符串不能与数值排序
  sorted(reverse=False)与前者的区别在于,它可以返回一个排序后的新列表

  对于值的大小相同,但类型不同的数值,遵循int < float < bool
  字符串的比较将在后续篇章说明,排序算法则在进阶篇中展开。

lst = [0, 1, 1.0, True, 2]
# 升序排列
lst.sort()
print(lst)

# 降序排列
print(sorted(lst, reverse=True))
[0, 1, 1.0, True, 2]
[2, 1, 1.0, True, 0]


7. 生成式

  生成式是for遍历的缩简语句,用于快速生成组合,格式为:运算式 for 变量 in 可迭代对象,即:遍历可迭代对象,将其每个元素经运算后的结果加入所生成的组合中。

print([i**2 for i in range(5)])
[0, 1, 4, 9, 16]

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

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

相关文章

VUE H5字体在安卓手机偏上解决

安卓手机展示样式,数字偏上,展示效果如图: 项目内添加新字体,引用新字体 vue 项目需要引入字体的话, 可以移步到这篇文章(无需下载依赖包)Vue3中引入外部自定义字体 项目文件assets内创建font文件夹, 粘贴你想用的字体, 创建对应的css文件; scss代码: font-face {/* 自定义的…

前端学习-day08

文章目录 01-相对定位02-绝对定位03-绝对定位居中04-固定定位05-堆叠顺序06-CSS精灵-基本使用07-案例-京东服务08-字体图标10.垂直对齐方式11-过度12-透明度13-光标类型14-轮播图 01-相对定位 <!DOCTYPE html> <html lang"en"> <head><meta ch…

k8s 声明式资源管理

一、资源配置清单的管理 1.1 查看资源配置清单 声明式管理方法&#xff1a; 1.适合于对资源的修改操作 2.声明式资源管理方法依赖于资源配置清单文件对资源进行管理 资源配置清单文件有两种格式&#xff1a;yaml&#xff08;人性化&#xff0c;易读&#xff09;&#xff0c;j…

高性能负载均衡的分类及架构分析

如何选择与部署适合的高性能负载均衡方案&#xff1f; 当单服务器性能无法满足需求&#xff0c;高性能集群便成为提升系统处理能力的关键。其核心在于通过增加服务器数量&#xff0c;强化整体计算能力。而集群设计的挑战在于任务分配&#xff0c;因为无论在哪台服务器上执行&am…

【C++初阶】--- C++入门(上)

目录 一、C的背景及简要介绍1.1 什么是C1.2 C发展史1.3 C的重要性 二、C关键字三、命名空间2.1 命名空间定义2.2 命名空间使用 四、C输入 & 输出 一、C的背景及简要介绍 1.1 什么是C C语言是结构化和模块化的语言&#xff0c;适合处理较小规模的程序。对于复杂的问题&…

看看汉朝有庙号的七位皇帝,你就知道含金量有多高?

汉朝拥有庙号的七位皇帝你们知道是谁吗&#xff1f; 相比于后世皇帝人手一个庙号的景象&#xff0c;汉朝皇帝庙号的使用是相当严谨的。很多原本拥有庙号的皇帝&#xff0c;最后因为功绩不多或者无功无德&#xff0c;最终被废除庙号。因此&#xff0c;汉朝谨遵“祖有功宗有德”…

LeetCode:78.子集

解答 class Solution:def subsets(self, nums: List[int]) -> List[List[int]]:res[[]]for i in nums:res[[i]num for num in res]return res代码解释 这段代码定义了一个名为Solution的类&#xff0c;并在其中定义了一个名为subsets的方法。该方法接受一个整数列表nums作…

Easy-poi 和 EasyExcel 选型

目录 共同点地址如何选 共同点 easy-poi 和 easyexcel 都是基于 apache poi 进行二次开发的&#xff0c;底层都是依赖的 apache poi使用简单&#xff0c;都可以通过简单的注解实现excel文件的导入导出 地址 esay poi 是一个开源的 excel,word 处理框架。链接 easy excel 是…

Vue 3入门指南

title: Vue 3入门指南 date: 2024/5/23 19:37:34 updated: 2024/5/23 19:37:34 categories: 前端开发 tags: 框架对比环境搭建基础语法组件开发响应式系统状态管理路由配置 第1章&#xff1a;Vue 3简介 1.1 Vue.js的历史与发展 Vue.js由前谷歌工程师尤雨溪&#xff08;Eva…

Java NIO 基础

Java NIO 基础 1. NIO 介绍2. NIO 三大组件2.1 Channel2.1.1 常见的 Channel2.1.2 常用方法 2.2 Buffer2.2.1 常见的 Buffer2.2.2 重要属性2.2.3 常用方法 2.3 Selector2.3.1 四种事件类型 1. NIO 介绍 NIO&#xff08;non-blocking io&#xff09;&#xff1a;非阻塞IO&#…

无网环境禁止 WPS 提示登录,且基本功能按钮可用

目前 WPS 升级后&#xff0c;每次打开都会提示你登录 WPS&#xff0c;并且在未登录之前所有基本功能按钮是置灰状态&#xff0c;无法使用。 如此一来&#xff0c;在内网或无网环境&#xff0c;我们无法登陆 WPS &#xff0c;就给我们的使用带来了极大的不便&#xff0c;那么有没…

go升级后 编译的exe在win7上无法正常运行

D:/Go/src/runtime/sys_windows_amd64.s:65 x75 fpx22fca sp-0x22fc8日 升级到go 1.21后报一堆错误&#xff0c;要死了啊 原来是go 1.21不支持win7了&#xff0c;必须把go退回到1.20版本 谷歌发布编程语言 Go 1.21 版本&#xff1a;取消支持微软 Win7/8 及苹果 macOS 10.13/10…

Vue3实战笔记(33)—组件传值props终章

文章目录 前言一、运行时声明、基于类型的声明二、一个小小的好奇心三、非 script setup场景下总结 前言 在 Vue 3 中&#xff0c;组件的声明方式主要有两种&#xff1a;运行时声明和基于类型的声明。这两种方式在 Vue 3 的 Composition API 中体现得尤为明显。 一、运行时声明…

如何使用Docker快速运行Firefox并实现远程访问本地火狐浏览器

文章目录 1. 部署Firefox2. 本地访问Firefox3. Linux安装Cpolar4. 配置Firefox公网地址5. 远程访问Firefox6. 固定Firefox公网地址7. 固定地址访问Firefox Firefox是一款免费开源的网页浏览器&#xff0c;由Mozilla基金会开发和维护。它是第一个成功挑战微软Internet Explorer浏…

基于manifest文件批量将coding的仓库导入gitlab中

文章目录 写在前面的话背景编写manifest文件最终效果 写在前面的话 前面有讲过通过manifest清单导入项目到gitlab中&#xff0c;但是实际的操作是不同gitlab实例之间的操作&#xff0c;然而对于在不同gitlab实例的repo迁移而言&#xff0c;显然direct transfer会更合适。 背景…

Spring6笔记(五):国际化、数据校验、提前编译

九、国际化&#xff1a;i18n 9.1 i18n概述 9.2 Java国际化 9.3 Spring6国际化 十、数据校验&#xff1a;Validation 10.1 Spring Validation 概述 10.2 实验一&#xff1a;通过 validator 接口实现 10.3 实验三&#xff1a;Bean Validation 注解 10.4 实验四&#xff1a;实现…

深入了解 RabbitMQ:构建可靠消息传递系统的关键

前言 在现代分布式应用程序开发中&#xff0c;构建可靠的消息传递系统至关重要。RabbitMQ 作为一款强大的消息代理软件&#xff0c;为开发人员提供了丰富的工具和解决方案。本文将深入探讨 RabbitMQ 的核心概念、工作原理以及其在实际应用中的应用场景。 一、什么是 RabbitMQ…

[力扣]——231.2的幂

题目描述&#xff1a; 给你一个整数 n&#xff0c;请你判断该整数是否是 2 的幂次方。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 如果存在一个整数 x 使得 n 2x &#xff0c;则认为 n 是 2 的幂次方。 bool isPowerOfTwo(int n){ if(n0)retur…

Diffusion Policy:基于扩散模型的机器人动作生成策略

项目地址&#xff1a; Diffusion Policy (columbia.edu) 一、摘要 本文介绍了 "扩散策略"&#xff0c;这是一种生成机器人行为的新方法&#xff0c;它将机器人的视觉运动策略&#xff08;visuomotor policy&#xff09;表示为条件去噪扩散过程&#xff08;conditi…

15:00面试,15:08出来,面试问的有点变态。。。。

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天…