Python基础语法-列表与元组

embedded/2024/10/21 19:25:12/

列表与元组

在编程中,经常需要使用变量来保存数据,如果数据比较少,我们创建几个变量也就算了,那如果数据很多呢。
甚至有些时候数据多到你都不清楚到底有多少,那么就需要使用到列表了。
列表是一种让程序员再代码中批量表示/保存数据的方式。

那什么是元组呢?
元组和列表相比,非常类似。区别再于列表中放哪些元素可以修改调整,元组中放的元素是创建元组时就设定好的,不能修改调整。

这点也就说明列表是动态的而元组是静态的。其实也就相当于C语言的数组,一个是动态数组,一个是动态数组。

1.创建列表

创建列表主要有两种方式[]表示一个空列表。

python">alist = [] #1
alist = list()#2
print(type(alist))#<class 'list'>

如果需要初始化,直接把你想要初始化的值放到[]中就可以了。
可以直接使用print来打印list中的元素。

python">alist = [1,2,3,4,5]
print(alist)
# [1, 2, 3, 4, 5]

要注意的是,列表是允许存放不同类型的数据的。这点和C++/java就很不同。

python">alist = [1,'hahhaaa',1.0]
print(alist)
#[1, 'hahhaaa', 1.0]
2.下标访问

可以通过下标访问操作符[]来获取列表中的任意元素。
这点就和C语言类似了,通过在[]填写下标索引来访问元素。

python">alist = [1,2,3,4,5]
print(alist[0])
# 1

注意:下标是从0开始的,后续依次递增。
同样我们不仅可以通过下标访问列表元素,还可以通过下标来修改元素。

python">alist = [1,2,3,4,5]
alist[0] = 100
print(alist[0])# 100

特别的是在python中,下标是可以取负值的,表示倒数第几个元素。

python">alist[-1] = alist[len(alist)-1]

注意:下标访问时,一定不要超出列表的有效范围,否则会抛出异常,报错的。

python">alist = [1,2,3,4,5]
print(alist[10])# IndexError: list index out of range

因为下标是从0开始的,因此下标的有效范围[0,列表长度-1],可以使用len函数来获取列表的长度。

python">alist = [1,2,3,4]
print(len(alist))# 4
3.切片操作

如果说通过下标操作是一次获取一个数,那么切片操作就是一次获取一个子列表。
语法

python">使用[:]来进行切片alist = [1,2,3,4,5]
print(alist[1:3])#[2, 3]alist[1:3]中的13使用的是左闭右开的区间,也就是[1,3)

关于切片的特殊操作

省略边界

python">alist = [1,2,3,4,5]
print(alist[1:]) #省略后边界,表示获取到列表的末尾
print(alist[:-1]) #省略前边界,表示从列表开头开始获取
print(alist[:]) #省略两个边界,表示获取整个列表
'''
[2, 3, 4, 5]
[1, 2, 3, 4]
[1, 2, 3, 4, 5]
'''

指定步长

python">alist = [1,2,3,4,5,6,7,8,9,0]
print(alist[::1])
print(alist[::2])
print(alist[::3])
print(alist[::4])
'''
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
[1, 3, 5, 7, 9]
[1, 4, 7, 0]
[1, 5, 9]
'''

如果指定的步长为负值,则会从后往前遍历。

python">alist = [1,2,3,4,5,6,7,8,9,0]
print(alist[::-1])
print(alist[::-2])
print(alist[::-3])
print(alist[::-4])
'''
[0, 9, 8, 7, 6, 5, 4, 3, 2, 1]
[0, 8, 6, 4, 2]
[0, 7, 4, 1]
[0, 6, 2]
'''

注意:在切片中填写的数字越界了,不会有负面效果,编译器只会尽可能地把满足条件地元素显示。

4.遍历列表元素

遍历’指的是把元素一个一个的取出来,再分别进行处理。

最简单就是for循环咯。

python">alist = [1,2,3,4,5]
for elem in alist:print(elem)

生成下标访问。

python">alist = [1,2,3,4,5]
for i in range(0,len(alist)):print(alist[i])

如果是while循环的话。

python">alist = [1,2,3,4,5]
while i < len(alist):print(alist[i])i+=1
5.新增元素

使用append方法/函数,向列表末尾插入一个元素。

python">alist = [1,2,3,4,5]
alist.append('elem')
print(alist)# [1, 2, 3, 4, 5, 'elem']

使用insert方法/函数,向任意位置插入一个元素。

python">alist = [1,2,3,4,5]
alist.insert(1,'elem') #第一次参数就是要插入的下标位置。
print(alist)# [1, 'elem', 2, 3, 4, 5]
6.查找元素

使用in操作符,判断元素是否在列表中存在,返回值是布尔类型。

python">alist = [1,2,3,4]
print(2 in alist)
print(100 in alist)
'''
True
False
'''

使用index方法,查找元素再列表中的下标,返回值是一个整数,如果元素不存在会报错。

python">alist = [1,2,3,4,5]
print(alist.index(2))
print(alist.index(10))'''
1
ValueError: 10 is not in list
'''
7.删除元素

使用pop方法删除末尾元素,即尾删。

python">alist = [1,2,3,4,5]
alist.pop()
print(alist)
'''
[1, 2, 3, 4]
'''

同时pop也能根据所提供的下标进行定点删除。

python">alist = [1,2,3,4,5]
alist.pop(2)
print(alist)# [1, 2, 4, 5]

如果不知道下标,列表还提供了remove方法,进行删除对应元素的操作

python">alist = [1,2,3,4,5,5,5]
alist.remove(5)
print(alist)#[1, 2, 3, 4, 5, 5]
8.连接列表

使用+可以使连个列表连接起来

python">alist = [1,2,3]
blist = [4,5,6,7]
print(alist+blist)# [1, 2, 3, 4, 5, 6, 7]

此处的+是会生成一个新的列表来存储,不会影响到就列表。

使用extend方法,相当于把一个列表拼接到另一个列表的后面。

a.extend(b)是吧b的内容拼接到a的末尾,会改变a,但不会改变b

python">alist = [1,2,3]
blist = [4,5,6,7]
alist.extend(blist)
print(alist)
print(blist)'''
[1, 2, 3, 4, 5, 6, 7]
[4, 5, 6, 7]
'''
9.关于元组

元组的功能和列表相比,基本一致的。
元组使用()来表示

python">atuple = ()
atuple = tuple()

元组不能修改里面的元素,列表则可以修改里面的元素。
因此像一些读操作,比如访问下标,切片,遍历,in,index +元组一样支持的。
但是像写操作 修改元素 新增元素 删除元素 extend元组 都是不支持的。
另外再python中很多时候默认的集合类型就是元组。

python">def test():return 1,2
print(type(test()))#<class 'tuple'>

为什么python即有列表又有元组呢?
元组的优势:

  • 你有一个列表, 现在需要调用一个函数进行一些处理. 但是你有不是特别确认这个函数是否会把你的列表数据弄乱. 那么这时候传一个元组就安全很多.
  • 字典, 是一个键值对结构. 要求字典的键必须是 “可hash对象” (字典本质上也是一个hash表). 而一个可hash对象的前提就是不可变. 因此元组可以作为字典的键, 但是列表不行

http://www.ppmy.cn/embedded/129345.html

相关文章

【H2O2|全栈】更多关于HTML(2)HTML5新增内容

目录 HTML5新特性 前言 准备工作 语义化标签 概念 新内容 案例 多媒体标签 音频标签audio 视频标签 video 新增部分input表单属性 预告和回顾 后话 HTML5新特性 前言 本系列博客是对入门专栏的HTML知识的补充&#xff0c;并伴随一些补充案例。 这一期主要介绍H…

Gitlab 完全卸载–亲测可行

1、停止gitlab gitlab-ctl stop2.卸载gitlab&#xff08;注意这里写的是gitlab-ce&#xff09; rpm -e gitlab-ce 3、查看gitlab进程 ps aux | grep gitlab 4、杀掉第一个进程&#xff08;就是带有好多.............的进程&#xff09; 5、删除所有包含gitlab文件 find / …

Ollama部署700亿参数大模型Llama3

Ollama部署700亿参数大模型Llama3 前言一、安装Ollama二、运行Llama3:70b 前言 首先&#xff0c;70b表示700亿参数&#xff0c;模型文件就有40G&#xff0c;一般的电脑是运行不了的&#xff0c;所以GPU 私有化部署大模型最佳解决方案 Ollama &#xff08;8B&#xff09;模型 …

GEE Python:利用Python API实现Sentinel-1、2和Landsat-8、9的可用影像数量

目录 简介 参数 Python代码 Python内置函数 简介 生成以下卫星图像集合的可用性图表: 1. 哨兵-1 2. 哨兵-2 3. Landsat-8 4. Landsat-9 参数 startDate(开始日期 图像集合的开始日期。格式为 YYYY-MM-DD endDate:结束日期: 图像集的结束日期。格式: YYYY-MM-DD 年-月…

Qt 窗口悬停事件和鼠标跟踪

悬停事件 //这行代码用于启用窗口部件&#xff08;widget&#xff09;的悬停事件跟踪功能。 setAttribute(Qt::WA_Hover, true); 作用 setAttribute(Qt::WA_Hover, true); 这行代码的作用是设置窗口部件的一个属性标志&#xff0c;使其能够接收悬停事件&#xff08;hover eve…

git clone报错fatal: pack has bad object at offset 186137397: inflate returned 1

逐步拷贝 https://stackoverflow.com/questions/27653116/git-fatal-pack-has-bad-object-at-offset-x-inflate-returned-5 https://www.cnblogs.com/Lenbrother/p/17726195.html https://cloud.tencent.com/developer/ask/sof/107092182 git clone --depth 1 <repository…

firewalld 防火墙常用命令

开启 firewalld systemctl start firewalld查看 firewalld 状态 systemctl status firewalldsystemctl status firewalld开启&#xff1a; 开放端口&#xff08;示例开放 80 端口&#xff09; firewall-cmd --zonepublic --add-port80/tcpfirewall-cmd --zonepublic --add…

嵌入式技术:熟悉开发环境及GPIO编程(实验报告)

1.实验目的 &#xff08;1&#xff09;理解GPIO常用函数功能 &#xff08;2&#xff09;掌握GPIO构件的输出测试方法 2.实验原理&#xff08;简述GPIO工作原理&#xff0c;5分&#xff09; GPIO&#xff0c;即通用输入输出端口&#xff0c;是单片机等微控制器上的一种基本接…