Python list列表全部操作方法

一. 介绍

1. 介绍

  1. 列表是 Python 中最基本的数据结构。

  2. 列表中的每个值都有对应的位置值,称之为索引,第一个索引是 0,第二个索引是 1,依此类推。

  3. 列表都可以进行的操作包括索引,切片,加,乘,检查成员。

  4. 此外,Python 已经内置确定序列的长度以及确定最大和最小的元素的方法。

  5. 列表是最常用的 Python 数据类型,它可以作为一个方括号内的逗号分隔值出现。

  6. 列表的数据项不需要具有相同的类型

  7. list列表的本质是一种有序的集合

二. 创建列表

语法: 列表名 = [元素1,元素2,元素3…]
说明:列表中的选项被称为元素,跟string类似,下标也是从0开始计数
举例:

#创建空列表
list1 = []
#格式化
list1 = list()

#创建带有元素的列表
list2 = [10, 20, 30, 10]
print(list2)
#结果
[10, 20, 30, 10]

注意:在列表中元素的数据类型可以不同(灵活性),列表中的元素类型可以是任意python中的基本数据类型或者是自定义的数据类型

list3 = [33, "good", True, 10.32]
print(list3)
#结果
[33, 'good', True, 10.32]

补充:
空列表可以简单地通过两个中括号进行表示([]),里面什么东西都没有,但是,如果想创建一个占用十个元素空间,却不包括任何有用内容的列表,可以用下面的方法,用某一个具体的值代替进行创建列表:

>>> list_empty = [0]*10
>>> list_empty
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

这样就生成了一个包括10个0的列表。然而,有时候可能会需要一个值来代表空,意味着没有在里面放置任何元素。这个时候就需要使用None。None 是一个Python的内建值,它的确切含意是"这里什么也没有"。因此,如果想初始化个长度为10的列表,可以按照下面的例子来实现:

>>> list_empty = [None]*10
>>> list_empty
[None, None, None, None, None, None, None, None, None, None]

这样就可以再去对list的各个元素进行初始化了。

三. 列表元素的访问

1. 列表的取值

功能:访问list列表中元素值
语法:列表名[索引]:list1[index]
(index取值范围(0,len(list1)),len(list)表示列表的长度)
举例:

list4 = [22, 33, 12, 32, 45]
#下标从0开始,最大值为len(list4)-1
print(list4[0])

注意:当索引值大于len(list4)-1的时候,会出现以下错误:

print(list4[5])
IndexError: list index out of range

这个错误就是下标越界【下标超出了可表示的范围】

2. 列表元素的替换

功能:更改列表元素的值
语法:列表名[下标] = 值:list1[index] = 值
举例:

list4 = [22, 33, 12, 32, 45]
list4[0] = "hello"
print(list4[0])

四. 列表操作

1. 列表组合

语法: 列表3 = 列表1 + 列表2
将列表1和列表2中的元素取出,组成一个新的列表并返回。
举例:

list1 = [1, 2, 3]
list2 = ['hello', 'yes', 'no']
list3 = list1 + list2
print(list3)
#结果
[1, 2, 3, 'hello', 'yes', 'no']

2. 列表重复

语法: 列表2 = 列表1 * n
举例:

list1 = [1, 2, 3]
list2 = list1 * 3
print(list2)
#结果
[1, 2, 3, 1, 2, 3, 1, 2, 3]

3. 判断元素是否在列表中

语法:元素 in 列表
若存在则返回True,否则返回False
举例:

list1 = [1, 2, 3]
print(1 in list1)
#结果
True

4. 列表截取

语法:list1[start:stop:step]
参数一:表示截取的开始下标值,默认为0
参数二:表示截取的结束下标值,默认为列表末尾
参数三:表示截取的步长,默认为1,可指定
注意:

  1. 截取区间[start, end),左闭右开
  2. list1[::-1]可以获得倒叙的列表
list1 = ["hello",2,True,False,3.14]
list2 = list1[:]
list3 = list1
print(list1[0:3:2])
print(list1[::-1])
print(list1[:3:-1])
print(list1[3::-1])
#结果
['hello', True]
[3.14, False, True, 2, 'hello']
[3.14]
[False, True, 2, 'hello']

补充:
遍历 [start,end),间隔为 span,当 span>0 时顺序遍历, 当 span<0 时,逆着遍历。start 不输入则默认为 0,end 不输入默认为长度。

>>> l = [i for i in range(0,15)]
>>> print(l[::2])
[0, 2, 4, 6, 8, 10, 12, 14]
  1. start:起始索引,从0开始,-1表示结束
  2. end:结束索引
  3. step:步长,end-start,步长为正时,从左向右取值。步长为负时,反向取值

举例说明:

>>> a=[1,2,3,4]
>>> b='abcdef'
>>> print(a[1:2])
[2]
>>> print(b[2:])
cdef
>>> print(a[::-1])
[4, 3, 2, 1]
>>> print(b[::-1])
fedcba

如果不是同样追求语法细节的“老鸟”,这段代码的作用恐怕不能第一眼看出来,实际上为了更好的体现 pythonic 的代码是充分利用 python 库里的 reversed() 函数。

>>> print(list(reversed(a)))
[4, 3, 2, 1]
>>> print(list(reversed(b)))
['f', 'e', 'd', 'c', 'b', 'a']

5. Python 中的 [:-1] 和 [::-1]

举例说明:

a='python'
b=a[::-1]
print(b) #nohtyp
c=a[::-2]
print(c) #nhy
#从后往前数的话,最后一个位置为-1
d=a[:-1]  #从位置0到位置-1之前的数
print(d)  #pytho
e=a[:-2]  #从位置0到位置-2之前的数
print(e)  #pyth

用法说明:

b = a[i:j]   # 表示复制a[i]到a[j-1],以生成新的list对象

a = [0,1,2,3,4,5,6,7,8,9]
b = a[1:3]   # [1,2]

# 当i缺省时,默认为0,即 a[:3]相当于 a[0:3]
# 当j缺省时,默认为len(alist), 即a[1:]相当于a[1:10]
# 当i,j都缺省时,a[:]就相当于完整复制一份a

b = a[i:j:s]    # 表示:i,j与上面的一样,但s表示步进,缺省为1.
# 所以a[i:j:1]相当于a[i:j]

# 当s<0时,i缺省时,默认为-1. j缺省时,默认为-len(a)-1
# 所以a[::-1]相当于 a[-1:-len(a)-1:-1],也就是从最后一个元素到第一个元素复制一遍,即倒序。

6. 列表遍历:

# 正序遍历:
list01 = ["Googl",'Runoob',1997,2002]
for i in range(len(list01)):  #用法1    
    print(list01[i])
for item in list01:  #用法2    
    print(item)
    
# 反向遍历
for i in range(len(list01) - 1, -1, -1):    
    print(list01[i])

结果:

Googl
Runoob
1997
2002
Googl
Runoob
1997
2002
2002
1997
Runoob
Googl

7. 二维列表

语法:列表 = [列表1,列表2,列表3,… ,列表n]
说明:列表中元素可以是Python的基本数据类型,也可以是自定义的数据类型。
当列表中存放的元素刚好又是列表的时候,我们可以称这个列表为二维列表
举例:

#创建二维列表,即列表中的元素还是列表
list1 = [[1, 2, 3],[2, 3, 4],[5, 4, 9]]

二维列表取值(访问):
语法:列表名 [下标1][下标2]
说明:下标1代表第n个列表(下标从0开始),下标2代表第n个列表中的第n个元素
举例:

list1 = [[1, 2, 3],[2, 3, 4],[5, 4, 9]]
print(list1[0][0])

五. 列表的方法

1. list.append(元素或列表)

功能:在列表中末尾添加新的元素【在原本的列表中追加元素】
说明:append()中的值可以是列表也可以是普通元素
举例:

>>> list1 = [3, 4, 6]
>>> list1.append(6)
>>> print(list1)
[3, 4, 6, 6]

2. list.extend(列表)

功能:在列表的末尾一次性追加另外一个列表中的多个值
说明:extend()中的值只能是列表或元组【一个可迭代对象(可加在for循环之后的)】,打碎可迭代对象之后的元素再加入列表中,不能是元素
举例:

>>> list1 = [1,2,3]
>>> list2 = [3, 4,5]
>>> list1.extend(list2)
>>> print(list1)
[1, 2, 3, 3, 4, 5]

3. list.insert(下标值, 元素或列表)

功能:在下标处插入元素,不覆盖原本的数据,原数据向后顺延
说明:插入的数据可以是元素也可以为列表
举例:

>>> list1 = [1,2,3]
>>> list1.insert(1,0)
>>> print(list1)
[1, 0, 2, 3]
>>> list1.insert(1,[2, 4, 8])
>>> print(list1)
[1, [2, 4, 8], 0, 2, 3]

4. list.pop(下标值)

功能:移除列表中指定下标处的元素(默认移除最后一个元素),并返回移除的数据
说明:此处会返回删除数据
举例:

>>> list1 = [1, [2, 4, 8], 0, 2, 3]
>>> list1.pop()
3
>>> print(list1)
[1, [2, 4, 8], 0, 2]
>>> list1.pop(2)
0
>>> print(list1)
[1, [2, 4, 8], 2]

5. list.remove(元素)

功能:移除列表中的某个元素第一个匹配结果
举例:

>>> list1 = [1, 2, 3]
>>> list1.remove(2)
>>> print(list1)
[1, 3]

6. list.clear()

功能:清除列表中所有的数据
举例:

>>> list1 = [1, 2, 3]
>>> list1.clear()
>>> print(list1)
[]

7. list.index(x[, start[, end]])

功能:从指定的范围的列表中找出某个值(object)第一匹配的索引值
说明:查询范围[start,stop),若不指定范围,则默认是整个列表。
注意:若在列表中找不到这个元素,则会报错。
举例:

>>> list1 = [1, 2, 3]
>>> list1.index(2)
1
>>> list1.index(4)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 4 is not in list

8. list.count(元素)

功能:查看元素在列表中出现的次数
举例:

>>> list1 = [1, 2, 3, 1]
>>> list1.count(1)
2

9. len(list)

功能: 获取列表元素的个数(长度)
举例:

>>> list1 = [1, 2, 3, 1]
>>> len(list1)
4

10. max(list)

功能:获取列表中的最大值
举例:

>>> list1 = [1, 2, 3, 1]
>>> max(list1)
3

11. min(list)

功能:获取列表中的最小值
注意:比较的是ASCII值
举例:

>>> list1 = [1, 2, 3, 1]
>>> min(list1)
1

12. list.reverse()

功能: 将列表中的元素倒叙,在原列表进行操作,不返回新的列表。
举例:

list1 = ["hello1","good1","nice","good","hello"]
print(id(list1))
list1.reverse()
print(list1)
print(list1.reverse())
print(id(list1))
#结果
2158912823880
['hello', 'good', 'nice', 'good1', 'hello1']
None
2158912823880

13. list.sort()

list.sort(reverse=False)
功能:将list中的元素进行升序排列【默认reverse=False】,当reverse为True的时候,降序排列。
注意:在原列表进行排序,不返回新的列表
举例:

>>> list1 = [1, 2, 3, 1]
>>> list1.sort()
>>> print(list1)
[1, 1, 2, 3]

14. 赋值拷贝

语法:

list1 = [1, 2, 3]
list2 = list1

特点:共用同一块内存空间,更改其中任意一个变量,其他变量都会受到影响。
注意:赋值拷贝为引用拷贝,类似于快捷方式

list1 = [1,2,3,4,[1,2,3,4]]
list2 = list1
print(id(list1))
print(id(list2))
list2[-1] = True
print(list2)
print(list1)
#结果
1585735384392
1585735384392
[1, 2, 3, 4, True]
[1, 2, 3, 4, True]

15. 浅拷贝 list.copy()

语法:

list1 = [1, 2, 3]
list2 = list1.copy()

注意:只适用于一维列表;浅拷贝为一维内存拷贝,开辟了新的内存空间
不完全内存拷贝,对于一维列表重新开辟了一块内存空间,但若出现二维列表的情况下,因为二维列表存放在一维列表中存放的是列表的地址,因此,若出现二维列表相当于间接的引用了同一块内存区域(即二维列表还是共用内存)。

举例:

>>> list1 = [1, 2, 3, 1]
>>> list2 = list1.copy()
>>> print(list2)
[1, 2, 3, 1]
>>> print(id(list2))
4314525320
>>> print(id(list1))
4314524808

import copy
list1 = [1,2,3,4,[1,2,3,4]]
list3 = list1.copy()
list3[-1][-1] = True
print(id(list1))
print(id(list3))
print(list1)
print(list3)
#结果
#一维存储地址不同
1614254026312
1614254024904
#二维存储地址相同,伴随发生改变
[1, 2, 3, 4, [1, 2, 3, True]]
[1, 2, 3, 4, [1, 2, 3, True]]

16. 深拷贝 copy.deepcopy()

语法:

impo copy
list2 = copy.deepcopy(list1)

说明:完全内存拷贝,相当于将list1中的所有列表元素重新复制了一份,对于多维的也重新开辟了新的内存空间
举例:

list1 = [1,2,3,4,[1,2,3,4]]
list4 = copy.deepcopy(list1)
list4[-1][-1] ="hello"
print(id(list1))
print(id(list4))
print(list1)
print(list4)
#结果
#一维存储地址不同
2215608102408
2215608101128
#二维存储地址不同,不伴随发生改变
[1, 2, 3, 4, [1, 2, 3, 4]]
[1, 2, 3, 4, [1, 2, 3, 'hello']]

17. list(元组)

功能:将元组转为列表

>>> list1 = list((1, 2, 3, 4))
>>> print(list1)
[1, 2, 3, 4]

六. 列表的遍历

1. 使用for循环遍历列表

语法:

for 变量名 in 列表 :
​	语句

功能:for循环主要用于遍历列表
遍历:指的是依次访问列表中的每一个元素,获取每个下标对应的元素值
说明:按照顺序获取列表中的每个元素,赋值给变量名,再执行语句,如此循环往复,直到取完列表中所有的元素为止
举例:

>>> list1 = ['hello', 78, '你好', 'good']
>>> for item in list1:
...     print(item)
... 
hello
78
你好
good

2. 使用while循环遍历列表[使用下标循环]

语法:

下标 = 0
while 下标 < 列表的长度:
​ 语句
​ 下标 += 1

3. 同时遍历下标与元素

语法:

for 下标,变量 in enumerate(列表):
	语句

举例:

>>> list1 = ['hello', 78, '你好', 'good']
>>> for index,item in enumerate(list1):
...     print(index, item)
... 
0 hello
1 78
2 你好
3 good

enumerate()[枚举]函数用于一个可遍历的数据对象(如列表,元组或者字符串)组合为一个索引序列,同时列出数据与数据下标,一般使用在for循环中
enumerate(obj, [start =0])
obj:一个可迭代对象
start:下标起始位置

4. 列表推导式

列表推导式书写形式:

[表达式 for 变量 in 列表]
或者
[表达式 for 变量 in 列表 if 条件]

七. 参考链接

  1. Python列表(list)的相关操作及方法
  2. Python3 List index()方法:https://www.runoob.com/python3/python3-list.html

猜你喜欢

转载自blog.csdn.net/flyingluohaipeng/article/details/129324199