Python 序列类型(1)

简介: 【10月更文挑战第8天】

【10月更文挑战第8天】

1.列表---list

  1. 索引的使用

当我们有一个数据的时候,我们怎么将这个数据存储到程序呢?

我们定义一个变量,将数据存储在变量中

那么如果有100个数据呢?要定义100个变量吗?

我们是可以用列表这个东西进行多个数据的存放

列表的定义:[ ]

空列表:[ ]

列表:[元素1,元素2,元素3 ]

列表中的内容叫做元素,元素与元素之间要用逗号进行分隔

#编辑模式
li=[]#空列表
print(type(li))
#交互模式
<class 'list'>#列表的意思

存放多个数据的列表:

li=[1234,'abcd',12.45]
print(type(li))

那么我们现在如何从这个列表里面拿取我们想要的元素呢?

我们可以通过列表的索引来取得对应位置上的值

使用方式:列表序列[索引]

注意:

1.索引值是从0开始的

2.负索引值就是从列表尾部往前数

3.索引取值超过长度就会报错

这个索引在C/C++中就是下标

列表对应C/C++就是数组

索引值的使用方式:

#编辑模式
li=[1234,'abcd',12.45]
print(type(li))

print(li[0])
print(li[1])
print(li[2])
#交互模式
<class 'list'>
1234
abcd
12.45

除了正索引我们还有负索引

负索引是怎么使用的呢?

我们是从右往左开始进行的

如果使用负索引的话,最右边的下标是-1

然后从左到右一次减小1位

负索引的使用:

#编辑模式:
li=[1234,'abcd',12.45]
print(type(li))
print("正索引")
print(li[0])
print(li[1])
print(li[2])

print("负索引")
print(li[-1])
print(li[-2])
print(li[-3])
#交互模式
正索引
1234
abcd
12.45
负索引
12.45
abcd
1234

正索引:从左往右(从0开始,依次变大)

负索引:从右往左(-1开始,依次减小)

对于这个列表中的12.45我们是有两种方式进行获取的

li[2] li[-1] 这两种表达都是指向12.45

正索引一般是拿比较靠前的元素的数据

负索引一般是拿比较靠后的元素的数据

通过len(序列)我们能查看序列的元素个数

index获取列表中对应元素的索引值

但是对于数组多的元素我们能不能通过代码的方式找到我么想要的那个元素的索引值呢?

我们可以通过index来寻找对应元素的索引值

index的使用方式:

#编辑模式
li=[1234,'abcd',12.45]
print(li.index("abcd"))
print(li.index(12.45))
#交互模式
1
2

通过这种方式能返回对应元素的索引值

这么我们就能在一个数组中进行元素的寻找了

返回的是列表中我们想要查找的元素的索引值

列表的切片--获取列表中一定范围的元素

通过上面的方法我们能进行一个元素的寻找

但是假如我们想一次拿多个元素怎么办呢?还是按照这样一个一个进行查找吗?

其实列表式可以根据一个范围来取值的,这称为切片

使用方式:列表名[开始索引:结束索引:步长]

开始索引默认值是0

结束索引默认值到最后一个元素

步长默认为1

注意:

1.切片是两个范围之间取值,且后面的数取不到

2.切片时范围超过也没有关系

3.切片时还可以指定步长,不指定时,步长默认为1

我们定义了结束索引值,我们取到的值是不包含结束索引值指向的元素的

[开始索引值,结束索引值)

因为这个开始索引值和结束索引值存在默认值

那么我们可以是不写这两个的,我们光写个结束索引值就行了

但是一开始的开始索引值和结束索引值之间的冒号不能省略了

切片获取列表中某个范围的元素:

#从列表中获取多个元素,我们通过切片

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

print(li[0:3:1])
#[1, 2, 3]
#我们这里只获取了1,1,2这三个元素,没有获取到4
#但是4的索引值是3啊
#为什么我们没有获取到呢?

#因为我们在取这个范围的元素的时候,我们是不包含这个结束索引指向的元素的

print(li[:3])

#步长的使用
#现在我们想获取1 3 5 7 9
#我们是可以通过步长进行获取的
print(li[:8:2])

#[1, 3, 5, 7]

#但是我们这里仅仅获取到了7,并没有拿到结束索引值指向的9
print(li[:9:2])

#[1, 3, 5, 7, 9]

#但是我们将这个结束索引值进行增加我们就拿到了最后的那个值9

#这里的步长就是元素与元素之间的间隔大小,我们这里的是2

#我们使用切片的时候结束索引超出了是没问题的
#但是我们直接使用索引的话,索引超出了范围是会报错的


print(li[::2])
#我们这里的话不写开头和结尾的索引值的话,我们也是能拿到这个列表中满足步长为2的元素的
#[1, 3, 5, 7, 9]

我们使用切片的时候结束索引超出了是没问题的

但是我们直接使用索引的话,索引超出了范围是会报错的

我们使用默认开始索引和结束索引我们也是能获取到这个列表中满足步长的元素的

对于获取一个范围没有规律的元素的方法:

#现在我们想获取1 3 4 6
#这种就没有什么规律了,那么我们怎么进行获取呢?
#但是分开看的话,1和3分隔2,4和6分隔2
#我们可以使用加号进行拼接,列表+列表是拼接,字符串+字符串是拼接
print(li[0:3:2])#通过这个我们能拿到[1, 3]
print(li[3:6:2])#通过这个我们拿到了[4, 6]

#那么我们现在如何进行拼接操作呢?
print(li[0:3:2]+li[3:6:2])#因为列表+列表是拼接,那么我们将两个获取到的直接进行相加

对于我们获取一个范围内分布有规律的元素我们可以设置步长

但是我们获取一个范围内排布没有规律的元素

我们可以将这个范围进行分割,分割为多个小范围列表,然后进行拼接,就能得到我们想要的列表了

列表的方法

列表的方法包括增删查改

列表的增

对于列表的增,我们存在三种方法:append extend insert

append的中文就是追加的意思

就是在列表的末尾进行元素的追加

entend就是扩展

insert就是插入的意思,在某一个地方进行元素的插入

1.append的使用方法

列表.append()

append的使用方法---追加:

li=['苹果']
#append直接在列表的尾部进行元素的插入的    就是追加
li.append("香蕉")
print(li)
#['苹果', '香蕉']
li.append("西瓜")
print(li)
['苹果', '香蕉', '西瓜']

insert的使用方法

列表.insert(插入位置的索引值,要插入的元素)----进行元素的插入,插队

insert的使用方法---插入到给定的索引值对应的元素的前面:

#现在我想将桃子查到香蕉的前面
li.insert(1,"桃子")
print(li)
#['苹果', '桃子', '香蕉', '西瓜']
#这里的元素索引就是我们要插入的位置的后面的那个元素的索引
#我们使用insert将元素插入到我们想要的元素的前面

extend(序列类型)

不能是数字或者是浮点数

extend的作用是将序列拆开,一个内容为一个元素进行添加

主要是将一个我们指定的队列追加到这个队列后面去

extend的使用方法:

li.extend("飞机")
print(li)
#['苹果', '桃子', '香蕉', '西瓜', '飞', '机']
#我们这里的飞机从一个元素变成了两个元素

#其实extend的作用是将序列拆开,一个内容为一个元素进行添加
#而且我们这里非要在里面添加序列类型
#不能是数字,一定要是序列类型
#序列类型是可以迭代的,但是整型是不可以的
#li.extend(12),这种写法就会报错

#extend后面能添加的序列类型有:字符串、列表、元组
#数字整型浮点型是不能写入括号的


li.extend(li)
print(li)
#['苹果', '桃子', '香蕉', '西瓜', '飞', '机', '苹果', '桃子', '香蕉', '西瓜', '飞', '机']

列表的改

列表[索引]=新值

将列表中对应的索引对应的值进行新的赋值

列表元素的修改:

li=['苹果', '桃子', '香蕉', '西']
#现在我们想将西这个字符进行修改,修改为“西瓜”
li[-1]="西瓜"
print(li)
#['苹果', '桃子', '香蕉', '西瓜']

print(li.index("西瓜"))

列表的查

列表名.index("要查找的数据")

使用index进行元素的索引的查找:

#如果我们现在想将桃子改成飞机,但是我们不知道桃子在哪里
#我们使用index进行查找
print(li.index("桃子"))
li[li.index("桃子")]="飞机"
print(li)

#1   桃子的索引值
#['苹果', '飞机', '香蕉', '西瓜']

通过索引值我们能找到元素

通过列表的切片操作我们能找到一定范围的元素

通过我们的index我们能找到对应元素的索引值

列表的删

1.列表.pop(索引)

删除列表中指定索引的值

我们根据对应的索引值将这个元素进行删除

列表.pop(对应元素的索引值):

#将4删除(如果存在多个的话我们只能删除最前面的)
li=[1,2,3,4,5,1,2,3,4,5]
li.pop(li.index(4))
print(li)
#[1, 2, 3, 1, 2, 3, 4, 5]
li.pop()
print(li)#我们这里没有指定索引,那么就是删除最后一个
#[1, 2, 3, 1, 2, 3, 4,]

我们不指定索引值的话,那么默认就是将最后一个元素删除掉

2.列表.remove(元素)

删除列表中指定的值(如果存在多个的话我们是只能删除最前面的这个值,不能你全部删除掉)

列表.remove(对应的元素):

li=[1,2,3,4,5,1,2,3,4,5]
li.remove(5)
print(li)
#[1, 2, 3, 4, 1, 2, 3, 4, 5]

3.del 序列

直接将序列从内存中删除掉

如果我们再想找到这个序列的话是找不到了

也是无法打印的,就说我们未定义

del li
print(li)
'''
Traceback (most recent call last):
  File "C:\Users\27890\Desktop\序列类型(列表、元组).py", line 158, in <module>
    print(li)
NameError: name 'li' is not defined
'''

4.列表的清空操作

列表.clear()---直接清空列表中的元素,得到一个空列表

clear的使用:

li1=[1,2,3,4,5,1,2,3,4,5]
li1.clear()
print(li1)
#[]

列表的嵌套---二维列表

二维列表元素的获取:

li=[[12,"小明"],[13,"小红"],[15,"凯子"]]
for i in li:#这个循环后面的序列
    print(i)#每次打印列表中的一个元素

#我们现在想要获取小明怎么写代码呢?
print(li[0][1])
#小明

列表中还存在多个列表就是列表的嵌套

列表中的一些适用的方法:

1.列表.index()----查找某个元素的索引值

2.列表.count()----计算列表中某个元素的个数

li=['苹果', '飞机', '香蕉', '西瓜']
print(li.count("西瓜"))
#1

3.len(序列)----计算出某个列表的元素的个数

li=['苹果', '飞机', '香蕉', '西瓜']

print(len(li))
#4

下面的两个找最大最小值的函数一定要保证序列的里面的元素是一样的

4.max(序列)---获取序列中的最大值

5.min(序列)---获取序列中的最小值

li2=[1,5,6,8,9,1,20,56]

print(max(li2))
print(min(li2))
#56
#1

6.reverse---倒序

列表.reverse()

li=[1, 1, 4, 5, 5, 5, 6, 8, 46]
li.reverse()
print(li)
#[46, 8, 6, 5, 5, 5, 4, 1, 1]

7.sort列表的排序功能

要确保列表中的类型都是同一个类型,不是一个类型的数据怎么比?比不了的

默认的是从小到大的排序---升序

li=[1,5,6,8,4,1,5,46,5]
li.sort()
print(li)
#[1, 1, 4, 5, 5, 5, 6, 8, 46]

如果想要降序的操作话,只需要两步

第一步就是将数组进行排序--默认是升序

然后我们使用reverse进行列表的元素的颠倒,然后就得到了降序的列表

但是我们还有一种方式更快捷

列表.sort(reverse=True/False)

我们可以对reverse的调整,调整为这个列表倒不倒序

因为sort的排序是从小到大的

所以reverse的值默认是False

那么我们就需要将reverse改成True

在sort中对reverse进行调整实现倒序:

li=[1, 1, 4, 5, 5, 5, 6, 8, 46]
li.sort(reverse=True)
print(li)
#[46, 8, 6, 5, 5, 5, 4, 1, 1]

当sort里面的reverse为True的时候就是我同意你去倒序了

8.sorted

这个是临时排序

我们的sort是永久排序,在列表上直接进行修改,对列表产生实质的永久的影响

我们这里也是可以设置这个reverse参数

不设置的话就是False

这个sorted是不会在原列表上进行修改的

是会生成一个新的列表

这个新的列表就是基于原列表的修改的列表

li=[46, 8, 6, 5, 5, 5, 4, 1, 1]
li3=sorted(li,reverse=False)#这里默认是升序的
print(li3)

临时排序默认打印出来的也是升序的列表

临时排序sorted不会对排序的列表直接进行修改,而且生成一个新的列表

永久排序sort会对排序的列表直接进行修改

两种排序默认都是从小到大,升序

如果想要变成降序的话,我们需要将reverse的参数进行修改,将默认的False改成True

对于这些函数来说

max min sum len 都是在括号内写序列的

其他的就是在函数前面加上函数名+.然后就能进行调用了

目录
相关文章
|
1月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
142 1
|
2月前
|
IDE 开发工具 开发者
Python类型注解:提升代码可读性与健壮性
Python类型注解:提升代码可读性与健壮性
256 102
|
7月前
|
索引 Python
Python的变量和简单类型
本文介绍了Python中变量命名规则、常用变量类型及字符串操作。变量命名需遵循字母、数字和下划线组合,不能以数字开头且不可与关键字冲突。字符串支持单引号、双引号或三引号定义,涵盖基本输出、转义字符、索引、拼接等操作。此外,还详细解析了字符串方法如`islower()`、`upper()`、`count()`等,帮助理解字符串处理技巧。
198 15
|
3月前
|
安全 JavaScript Java
Python中None与NoneType的真相:从单例对象到类型系统的深度解析
本文通过10个真实场景,深入解析Python中表示“空值”的None与NoneType。从单例模式、函数返回值,到类型注解、性能优化,全面揭示None在语言设计与实际编程中的核心作用,帮助开发者正确高效地处理“无值”状态,写出更健壮、清晰的Python代码。
362 3
|
3月前
|
缓存 数据可视化 Linux
Python文件/目录比较实战:排除特定类型的实用技巧
本文通过四个实战案例,详解如何使用Python比较目录差异并灵活排除特定文件,涵盖基础比较、大文件处理、跨平台适配与可视化报告生成,助力开发者高效完成目录同步与数据校验任务。
148 0
|
3月前
|
IDE API 开发工具
Python类型注解:让代码“开口说话”的隐形助手
Python类型注解为动态语言增添类型信息,提升代码可读性与健壮性。通过变量、函数参数及返回值的类型标注,配合工具如mypy、IDE智能提示,可提前发现类型错误,降低调试与协作成本。本文详解类型注解的实战技巧、生态支持及最佳实践,助你写出更高质量的Python代码。
185 0
|
6月前
|
Python
Python技术解析:了解数字类型及数据类型转换的方法。
在Python的世界里,数字并不只是简单的数学符号,他们更多的是一种生动有趣的语言,用来表达我们的思维和创意。希望你从这个小小的讲解中学到了有趣的内容,用Python的魔法揭示数字的奥秘。
163 26
|
6月前
|
人工智能 安全 IDE
Python 的类型安全是如何实现的?
本文探讨了 Python 的类型安全实现方式。从 3.5 版本起,Python 引入类型提示(Type Hints),结合静态检查工具(如 mypy)和运行时验证库(如 pydantic),增强类型安全性。类型提示仅用于开发阶段的静态分析,不影响运行时行为,支持渐进式类型化,保留动态语言灵活性。泛型机制进一步提升通用代码的类型安全性。总结而言,Python 的类型系统是动态且可选的,兼顾灵活性与安全性,符合“显式优于隐式”的设计哲学。
131 2
|
8月前
|
Rust JavaScript 前端开发
[oeasy]python075_什么是_动态类型_静态类型_强类型_弱类型_编译_运行
本文探讨了编程语言中的动态类型与静态类型、强类型与弱类型的概念。通过实例分析,如Python允许变量类型动态变化(如`age`从整型变为字符串),而C语言一旦声明变量类型则不可更改,体现了动态与静态类型的差异。此外,文章还对比了强类型(如Python,不允许隐式类型转换)和弱类型(如JavaScript,支持自动类型转换)的特点。最后总结指出,Python属于动态类型、强类型语言,对初学者友好但需注意类型混淆,并预告下期内容及提供学习资源链接。
233 21
|
存储 索引 Python
Python散列类型(1)
【10月更文挑战第9天】
128 0