Pyhthon学习笔记(一)—————列表

之前的内容会进行更新,我现在也是菜鸟,边学边记边学,与大家共勉。
本节主要介绍列表的相关内容,包括
(一)列表的创建与删除
(二)列表的查询操作
(三)列表元素的增、删、改操作
(四)列表元素的排序
(五)列表的推导式
列表的存在相当于其他语言中数组的数据,单个的变量存储单一的数据,在每次赋值后,该变量就会相应的改变,而列表的存在则是将多个变量存储在一个组里,方便对数据的整体操作。并且相比较于之前单一的数据类型,列表的数据类型可以同时存储多个和多种类型的数据内容,有更强的包容性。就比如下面这段代码:

lst=['a','0.5',100]
print[id(lst)]#输出lst的id
print(type(lst))#输出lst的类型
print(lst)

输出的结果如下所示:

Python里把列表里有元素提取出来的函数 python 提取列表每个元素_bc


下面先说说列表的创建与删除

(一)列表的创建与删除

1、列表的创建主要有两种方式:
使用中括号“[ ]”,代码如下:

lst1=['a','0.5',100]

调用内置函数list,代码如下:

lst2=list*(['a','0.5',100])

2、列表的特点

(1)、列表的元素是有序排列的

Python里把列表里有元素提取出来的函数 python 提取列表每个元素_赋值_02


顺序从左至右依次是从0开始递增的顺序,从右至左依次是递减的顺序。代码如下

lst3=['a','1','Abc',0.5,100]
print(lst3[0])

结果为:

Python里把列表里有元素提取出来的函数 python 提取列表每个元素_赋值_03

这说明,此时两个索引数据的值是相等的。
(2)列表索引的数据是唯一的
对同一位置上的数据,采用不同的索引方式进行索引,会得到相同的数据,比如从左往右索引第一个数据,位置为0;以及从右往左索引最后一个数据,位置为-5,代码如下

lst3=['a','1','Abc',0.5,100]
print(lst3(0),lst3(-5))

结果为:

Python里把列表里有元素提取出来的函数 python 提取列表每个元素_bc_04


(3)列表可以存储相同的数据

lst3=['a','1','Abc',0.5,100,'a']
print(lst3(0),lst3(-1))

结果为:

Python里把列表里有元素提取出来的函数 python 提取列表每个元素_bc_04


(4)任意数据类型可以混存

对于上述创建的列表类型,分别输出其类型:

lst3=['a','1','Abc',0.5,'a']
print(type(lst3[0]),type(lst3[1]),type(lst3[2]),type(lst3[3]),type(lst3[4]))

结果为:

Python里把列表里有元素提取出来的函数 python 提取列表每个元素_bc_06


(4)根据需要动态分配和回收内存

不需要担心数据的多少,只需要按照需求往里放就可以,列表会根据需要自己分配内存。

(二)列表的查询操作

一是介绍的是index索引的方法,该方法主要有以下几个特点:

(1)如果列表中存在多个相同的元素,index()查找元素位置的时候,只返还第一个元素的位置

lst3=['a','1','Abc',0.5,'a']
print(lst3.index('a'))#注意索引的数据一定要和元数据一致

结果如下:

Python里把列表里有元素提取出来的函数 python 提取列表每个元素_数据_07

(2)如果列表中不存在该元素,则会报错

lst3=['a','1','Abc',0.5,'a']
print(lst3.index('5'))

结果如下:

Python里把列表里有元素提取出来的函数 python 提取列表每个元素_编程语言_08

(3)可以指定索引的起始和截止位置

lst3=['a','1','Abc',0.5,'a']
print(lst3.index('a',1,3))#在起始位置在1,终点位置在3,但不包括3的列表顺序中查找a这个元素

结果如下:

Python里把列表里有元素提取出来的函数 python 提取列表每个元素_bc_09


但如果是在0到3这个范围内查找’a’,则能够查找成功:

lst3=['a','1','Abc',0.5,'a']
print(lst3.index('a',0,3))#在起始位置在1,终点位置在3,但不包括3的列表顺序中查找a这个元素

结果如下:

Python里把列表里有元素提取出来的函数 python 提取列表每个元素_数据_10

二是介绍获取列表中的单个元素,该方法主要有以下几个特点:

(1)正向索引位置从0开始到N-1结束,例 lst[1]

lst3=['a','1','Abc',0.5,'a']
print(lst3[2])#从0开始数,向右数两格

结果如下:

Python里把列表里有元素提取出来的函数 python 提取列表每个元素_编程语言_11

(2)逆向索引位置从-1开始到-N结束,例 lst[-1]

lst3=['a','1','Abc',0.5,'a']
print(lst3[-3])#从-1开始数,向左数两格

结果如下:

Python里把列表里有元素提取出来的函数 python 提取列表每个元素_赋值_12

(3)索引不到位置,则报错

lst3=['a','1','Abc',0.5,'a']
print(lst3[-6])#从-1开始数,向左数

结果如下:

Python里把列表里有元素提取出来的函数 python 提取列表每个元素_编程语言_13

三是获取列表中的多个元素

获取列表中的多个元素,也就是列表中的切片操作,方法为:列表名[起始:终点:步长的方式],起止顺序包含起点,但不包含终点。其中起始点省略时默认是从0开始,终点省略时,默认是N-1,步长默认为1,代码如下:

lst4=[100,200,300,400,500,600,700,800,900]
print(lst4[1:6:1])
print(lst4[1:6:])
print(lst4[1:6:1])
print(lst4[:6:1])
print(lst4[1::1])
print(lst4[1:6:2])
print(lst4[6:0:-1])

结果如下:

Python里把列表里有元素提取出来的函数 python 提取列表每个元素_赋值_14


由例子可以看出,切片产生的为一个新的列表,元素则是从原列表的对应位置节选出的,当步长为负数时,产生的列表的顺序为倒序。

四是判断元素是否在列表中以及元素的遍历

此时涉及到in 、not in、以及for…in…循环,代码如下:

lst4=[100,200,300,400,500,600,700,800,900]
print(100 in lst4)
print(1000 not in lst4)
for item in lst4:
    print(item)

结果如下:

Python里把列表里有元素提取出来的函数 python 提取列表每个元素_赋值_15

(三)列表的增删改操作

一是列表元素的增加操作

(1)append():在列表的末尾添加一个元素
我们在列表4中添加1000这个元素,同时看这个列表的位置是否改变,就可以知道在列表添加元素之后是否重新创建了一个新的类别:

lst4=[100,200,300,400,500,600,700,800,900]
print(id(lst4))
lst4.append(1000)
print(lst4,id(lst(4)))

输出的结果为:

Python里把列表里有元素提取出来的函数 python 提取列表每个元素_编程语言_16


可以看到结果中的列表并没有改变ID,也就是说列表还是之前的列表,但是在尾端添加了一个新的元素。但要注意的是, 如果使用该方式额外添加列表中的多个元素,则会使该列表成为一个元素添加进去:

lst4=[100,200,300,400,500,600,700,800,900]
lst5=[1000,1100]
lst4.append(lst5)
print(lst4)

Python里把列表里有元素提取出来的函数 python 提取列表每个元素_数据_17


此时,默认将列表lst5作为一个元素添加到lst4中

(2)extend():在列表的末尾至少添加一个元素

再次添加元素时,可以添加多个元素,而将列表添加进去时,也会按照列表中的元素挨个添加:

lst4=[100,200,300,400,500,600,700,800,900]
lst5=[1000,1100]
lst4.extend(lst5)
print(lst4)
lst6=[100,200,300,400,500,600,700,800,900]
lst6.extend([1000,1100])
print(lst6)

输出结果为:

Python里把列表里有元素提取出来的函数 python 提取列表每个元素_bc_18


可以看出,这样子添加列表元素的方式时,结果时相同的。

(3)insert():在列表的任意位置添加一个元素

该函数可以在指定的位置添加指定的元素,添加的类型和append相似,比如说我们在索引为2的位置添加元素1000,代码如下:

lst4=[100,200,300,400,500,600,700,800,900]
lst4.insert(2,1000)
print(lst4)

输出结果为:

Python里把列表里有元素提取出来的函数 python 提取列表每个元素_bc_19


可以看到在指定索引位置为2的位置上添加了元素1000

(4)切片操作:在列表的任意位置至少添加一个元素

切片操作添加元素时,会将指定位置间的元素切除之后,再添加新的元素,比如在索引为2的位置到索引为5的位置添加元素时:

lst4=[100,200,300,400,500,600,700,800,900]
lst5=[1000,1100]
lst4[2:5]=lst5
print(lst4)

输出结果为:

Python里把列表里有元素提取出来的函数 python 提取列表每个元素_赋值_20


可以看出,在2到5的位置上,不仅仅将lst5中的元素添加到了lst4中,同时还将多余位置上的元素切除了。

以上便是对列表元素添加的四种方式,其中最常用的为append()函数。

二是列表元素的删除操作

(1)remove()函数,该函数的特点是一次只删除一个元素;当存在重复的元素时,将删除第一个元素;但不存在该元素时,将会报错(ValueError):

lst4=[100,200,300,400,500,600,700,800,900,100]
lst4.remove(500)
print(lst4)
lst4.remove(100)
print(lst4)
lst4.remove(1000)
print(lst4)

输出结果为:

Python里把列表里有元素提取出来的函数 python 提取列表每个元素_数据_21


(2)pop()函数,该函数的特点是删除一个指定位置上的元素;而指定索引不存在的时候则报错(IndexError);不指定索引,则删除列表中的最后一个元素:

lst4=[100,200,300,400,500,600,700,800,900,100]
lst4.pop(3)
print(lst4)
lst4.pop()
print(lst4)
lst4.pop(10)
print(lst4)

输出结果为:

Python里把列表里有元素提取出来的函数 python 提取列表每个元素_赋值_22


Python里把列表里有元素提取出来的函数 python 提取列表每个元素_数据_23


(3)切片操作

切除的操作类似上面的操作,一次切除指定索引位置之间的元素

lst4=[100,200,300,400,500,600,700,800,900,100]
lst5=lst4[1:3]#此时已经产生了新的列表对象
print(lst4,id(lst4))
print(lst5,id(lst5))

输出结果为:

Python里把列表里有元素提取出来的函数 python 提取列表每个元素_赋值_24


可以看到切片的操作删除列表元素时,原列表没有改变,同时产生了新的列表记录切片后的列表内容。

(4)删除整个列表

删除整个列表本身,可以使用del函数,使用完之后,再索引列表则会报错:

lst4=[100,200,300,400,500,600,700,800,900,100]
del lst4
print(lst4)

输出结果为:

Python里把列表里有元素提取出来的函数 python 提取列表每个元素_python_25


(5)清空列表元素则可以使用clear()函数,会将列表中的所有元素清空,成为一个空列表

lst4=[100,200,300,400,500,600,700,800,900,100]
lst4.clear()
print(lst4)

输出结果为:

Python里把列表里有元素提取出来的函数 python 提取列表每个元素_数据_26


可以看到此时列表中的元素已经被全部清空了。

三是列表元素的修改操作

(1)指定位置的列表单一元素修改,比如下面的代码就是将列表索引位置为9的元素进行修改,从100改成1000:

lst4=[100,200,300,400,500,600,700,800,900,100]
lst4[9]=1000
print(lst4)

输出结果为:

Python里把列表里有元素提取出来的函数 python 提取列表每个元素_python_27


(2)切片操作,切片操作类似于上面增加元素中的操作,此处不加赘述。

(四)列表的排序操作

列表排序的方法主要有两种:
(1)调用sort()方法,列表中的所有元素默认按照从小到大的顺序进行排序,可以指定reverse=True,进行降序排列:

lst4=[800,300,200,700,400,500,900,100,900]
print(lst4,id(lst4))
lst4.sort()#升序排列
print(lst4,id(lst4))
lst4.sort(reverse=True)#指定值赋值后,实现降序排列
print(lst4,id(lst4))
lst4.sort(reverse=False)#指定值赋值后,实现升序列
print(lst4,id(lst4))

输出结果为:

Python里把列表里有元素提取出来的函数 python 提取列表每个元素_编程语言_28


(2)调用sorted(),也可以指定序列,但是原列表不发生改变,此时系统会创建新的列表:

lst4=[800,300,200,700,400,500,900,100,900]
print(lst4,id(lst4))
new_lst4=sorted(lst4)
print(new_lst4,id(new_lst4))

输出结果为:

Python里把列表里有元素提取出来的函数 python 提取列表每个元素_bc_29


其改变顺序的方式与sort()函数一样,通过指定值得赋值改变。

(四)列表生成式

如果要存储一个新产生的列表值,比如所存储1到9的遍历元素,则可以采用以下的方式,用方括号将元素的表达式和生成的方式包含进去:

lst5=[i*j for i in range(1,10) for j in range(1,3) ]
print(lst5)

输出结果为:

Python里把列表里有元素提取出来的函数 python 提取列表每个元素_编程语言_30


以上便是列表的基本操作,下面一个笔记,将是字典的操作,希望大家喜欢