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 都是在括号内写序列的

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

相关文章
|
3月前
|
Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
|
2月前
|
存储 索引 Python
Python散列类型(1)
【10月更文挑战第9天】
|
2月前
|
计算机视觉 Python
Python实用记录(一):如何将不同类型视频按关键帧提取并保存图片,实现图片裁剪功能
这篇文章介绍了如何使用Python和OpenCV库从不同格式的视频文件中按关键帧提取图片,并展示了图片裁剪的方法。
82 0
|
3月前
|
机器学习/深度学习 数据采集 算法
时间序列结构变化分析:Python实现时间序列变化点检测
在时间序列分析和预测中,准确检测结构变化至关重要。新出现的分布模式往往会导致历史数据失去代表性,进而影响基于这些数据训练的模型的有效性。
221 1
|
2月前
|
存储 数据安全/隐私保护 索引
Python 散列类型三以及函数基础
【10月更文挑战第11天】
Python 散列类型三以及函数基础
|
2月前
|
Python
【10月更文挑战第6天】「Mac上学Python 11」基础篇5 - 字符串类型详解
本篇将详细介绍Python中的字符串类型及其常见操作,包括字符串的定义、转义字符的使用、字符串的连接与格式化、字符串的重复和切片、不可变性、编码与解码以及常用内置方法等。通过本篇学习,用户将掌握字符串的操作技巧,并能灵活处理文本数据。
57 1
【10月更文挑战第6天】「Mac上学Python 11」基础篇5 - 字符串类型详解
|
2月前
|
Python
【10月更文挑战第6天】「Mac上学Python 10」基础篇4 - 布尔类型详解
本篇将详细介绍Python中的布尔类型及其应用,包括布尔值、逻辑运算、关系运算符以及零值的概念。布尔类型是Python中的一种基本数据类型,广泛应用于条件判断和逻辑运算中,通过本篇的学习,用户将掌握如何使用布尔类型进行逻辑操作和条件判断。
63 1
【10月更文挑战第6天】「Mac上学Python 10」基础篇4 - 布尔类型详解
|
3月前
|
机器学习/深度学习 索引 Python
python之序列
python之序列
146 59
WK
|
2月前
|
存储 Python
Python内置类型名
Python 内置类型包括数字类型(int, float, complex)、序列类型(str, list, tuple, range)、集合类型(set, frozenset)、映射类型(dict)、布尔类型(bool)、二进制类型(bytes, bytearray, memoryview)、其他类型(NoneType, type, 函数类型等),提供了丰富的数据结构和操作,支持高效编程。
WK
18 2
|
2月前
|
存储 编译器 索引
Python 序列类型(2)
【10月更文挑战第8天】
Python 序列类型(2)