Python 列表List 整理

2023-12-18 23:09:52

目录

为什么需要列表

列表特点

列表示意图

创建列表

使用中括号创建

使用内置函数创建

内存示意图

删除列表

查询操作

获取单个元素

获取指定元素索引

全列表查找

指定位置查找

获取列表多个元素

切片的范围

Step设定

Step为正数

Step为负数

判断元素是否存在

列表元素的遍历

增加元素

Append

Extend

Insert

切片

修改元素

修改索引

切片

排序

列表sort方法

内置函数sorted

删除元素

Remove

Pop

clear

列表生成式

总结


为什么需要列表

1.变量可以存储一个元素,而列表是一个‘大容器’可以存储N多个元素,

程序可以方便的对这些数据进行整体操作;

2.列表相当于其他语言中的数组。

列表特点

列表元素按顺序有序排序

索引映射唯一个数据

列表可以存储重复数据

任意数据类型混存

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

列表示意图

创建列表

列表需要使用中括号[],元素之间使用英文的逗号进行分隔。

使用中括号创建

使用中括号创建列表,数据内容有字符串、数字、元组类型,其中还有重复的数据。

示例如下:

list1 = ['zhangsan', '张三', 1, 1, ('lisi', 2)]
print(list1)
print(type(list1))

# 执行结果
# ['zhangsan', '张三', 1, 1, ('lisi', 2)]
# <class 'list'>

使用内置函数创建

使用内置函数list()把元组数据转化为list。

示例如下:

list2 = list((1, 'zhangsan', 'lisi'))
print(list2)
print(type(list2))

# 执行结果
# [1, 'zhangsan', 'lisi']
# <class 'list'>

内存示意图

列表中存储的并不是数据,而是数据的引用。

删除列表

删除列表操作使用del方法,删除后不可再访问该列表。

示例如下:

list3 = [1, 2, 3, 4]
print(list3)

del list3
print(list3)

执行结果

[1, 2, 3, 4]
Traceback (most recent call last):
  File "E:\lianxipy\day3\列表.py", line 25, in <module>
    print(list3)
NameError: name 'list3' is not defined

查询操作

获取单个元素

可以通过指定索引(正向或逆向),获取相对应的元素。

注意:如果指定索引不存在元素,则抛出indexError异常类型。

示例如下:

list4 = [1, '张三', 'lisi', 'lisi']
print(list4[0])
print(list4[-1])
print(list4[-4])

# 执行结果
# 1
# lisi
# 1

可以看到通过指定索引0和-4获取的都是第一个列表值。

获取指定元素索引

使用列表的index函数,可以查找指定元素位于列表中的索引值,

只返回第一个符合的索引值;

但是如果不存在,则会抛出ValueError异常。

全列表查找

示例如下:

list4 = [1, '张三', 'lisi', 'lisi']
print(list4.index('lisi'))

# 执行结果
# 2

指定位置查找

指定位置查找是指,在使用index函数时指定起始和终止查找范围。

示例如下:

list4 = [1, '张三', 'lisi', 'lisi', 'lisi']
print(list4.index('lisi', 3, 4))

# 执行结果
# 3

从索引3(包含3)开始查找 ?查找到索引4(不包含4)。

获取列表多个元素

是一种通过切片形式来获取多个元素,具体格式为:列表名[start:stop:step]

返回结果为原列表相应片段的拷贝。

切片的范围

start 起始位置,可以与stop组合使用也可以单独使用

stop 终结位置,可以与start组合使用也可以单独使用

示例如下:

list4 = [1, '张三', 'lisi', 'lisi', 'lisi']
# 单独使用stop 表示从start(包含start位置)到最后
list4_1 = list4[1:]
print(list4_1)  # ['张三', 'lisi', 'lisi', 'lisi']

# 单独使用stop 表示从开始到stop (不包含stop位置) 为止
list4_2 = list4[:3]
print(list4_2) # [1, '张三', 'lisi']

# 组合使用  表示从start(包含start位置)到stop (不包含stop位置) 为止
list4_3 = list4[1:3]
print(list4_3) # ['张三', 'lisi']

Step设定

step默认为1,也就是不设置的情况下是1。

Step为正数

切片的第一个元素默认是列表的第一个元素。

示例如下:

list4 = [1, '张三', 'lisi', 'lisi', 'lisi']
# step为正数
print(list4[:3:2])  # 从0开始取到3为止,步长为2,结果为:[1, 'lisi']
print(list4[1:3:2]) # 从1开始取到3为止,步长为2,结果为:['张三']
print(list4[1::2])  # 从1开始取到最后,步长为2,结果为:['张三', 'lisi']

Step为负数

切片的第一个元素默认是列表的最后一个元素。

示例如下:

list4 = [1, '张三', 'lisi1', 'lisi2', 'lisi3']
print(list4[:-3:-1])   
# 从列表最后一个元素开始到-3(倒数第三个)为止,步长为1,结果为:['lisi3', 'lisi2']
print(list4[-1:-4:-1]) 
# 从列表最后一个元素开始到-4(倒数第四个)为止,步长为1,结果为:['lisi3', 'lisi2', 'lisi1']
print(list4[-2::-1])   
# 从列表倒数第二个元素开始到第一个元素为止,步长为1,结果为:['lisi2', 'lisi1', '张三', 1]

判断元素是否存在

使用in 与 not in 来判断指定元素在列表中是否存在,返回布尔值。

示例如下:

list5 = [1, 2, 3, 'zhang', 'san', 'li']
print(1 in list5)
print('zhang' not in list5)

# 执行结果
# True
# False

列表元素的遍历

遍历在列表的使用中经常出现,

格式:

for 迭代变量 in 列表名:
   具体操作

下面是如何遍历。

示例如下:

for i in list5:
    print(i)

# 执行结果
# 1
# 2
# 3
# zhang
# san
# li

增加元素

Append

在列表的末尾添加一个元素

示例如下:

list6 = [1]

# append
list6.append('end')
print(list6)

# 执行结果
# [1, 'end']

Extend

在列表的末尾至少添加一个元素。可使用字典、列表、元组、字符串等格式作为参数添加,

当以字符串参数添加时,会以单个字母形式添加入列表(认为是多个)

示例如下:

list6 = [1]
list6.extend({'end1'})
list6.extend(['end2'])
list6.extend(('end3',))
list6.extend('end4')
print(list6)

# 执行结果
# [1, 'end1', 'end2', 'end3', 'e', 'n', 'd', '4']

Insert

在列表的任意位置添加一个元素

示例如下:

list6 = [1]
list6.insert(0, 'zhangsan')
print(list6)
list6.insert(4, 'lisi')
print(list6)

# 执行结果
# ['zhangsan', 1]
# ['zhangsan', 1, 'lisi']

切片

在列表的任意位置添加至少一个元素。可以说是添加,也算是修改。

示例如下:

print('原列表:', list6)
list6[:1] = [1, 2, 3]
print(list6)

# 执行结果
# 原列表: [1]
# [1, 2, 3]

修改元素

修改索引

为指定索引的元素赋予一个新值。

示例如下:

list7 = [1, 2, 3]
print('原列表:', list7, id(list7))
list7[0] = 100
print(list7, id(list7))

# 执行结果
# 原列表: [1, 2, 3] 2666522038856
# [100, 2, 3] 2666522038856

可以看出在修改后列表id并未发生改变,还是原来的列表,只是值发生了改变。

切片

为指定的切片赋予一个新值。

示例如下:

list7 = [1, 2, 3]
print('原列表:', list7, id(list7))
list7[2:3] = [100, 110]
print(list7, id(list7))

# 执行结果
# 原列表: [1, 2, 3] 2110356345416
# [1, 2, 100, 110] 2110356345416

通过切片修改,把原来的第三个元素修改为100并添加了110。

排序

常见的两种方式来实现排序。

需要注意:排序的列表中不能是混合类型的即数字和字符串混合,必须是同样类型的,否则无法比较会抛出TypeError.

列表sort方法

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

示例如下:

list8 = [3, 4, 1, 4, 2, 0]
list9 = ['b', 'a', 'f', 'e']
# sort方法
print('原列表:', list8, id(list8))
list8.sort()
print(list8, id(list8))
# 降序
list8.sort(reverse=True)
print(list8, id(list8))

print('原列表:', list9, id(list9))
list9.sort()
print(list9, id(list9))
# 降序
list9.sort(reverse=True)
print(list9, id(list9))

执行结果:

原列表: [3, 4, 1, 4, 2, 0] 2399479616072
[0, 1, 2, 3, 4, 4] 2399479616072
[4, 4, 3, 2, 1, 0] 2399479616072
原列表: ['b', 'a', 'f', 'e'] 2399479616584
['a', 'b', 'e', 'f'] 2399479616584
['f', 'e', 'b', 'a'] 2399479616584

使用列表的sort函数是对原列表进行正序和倒序排序,直接修改了原列表。

内置函数sorted

调用内置函数sorted(),可以指定reverse=True,进行降序排序,原列表不发生改变。

示例如下:

list8 = [3, 4, 1, 4, 2, 0]
# 内置函数sorted
print('原列表:', list8, id(list8))
list8_1 = sorted(list8)
print(list8_1, id(list8_1))
# 降序
list8_2 = sorted(list8, reverse=True)
print(list8_2, id(list8_2))

print('原列表:', list8)

执行结果:

原列表: [3, 4, 1, 4, 2, 0] 2839586820680
[0, 1, 2, 3, 4, 4] 2839586821192
[4, 4, 3, 2, 1, 0] 2839587379080
原列表: [3, 4, 1, 4, 2, 0]

可以看出使用内置函数sorted是对原列表排序后,创建了新的列表,

原列表并没有发生改变。

删除元素

Remove

删除列表中的某个元素,当元素不存在时,会抛出ValueError异常

示例如下:

list10 = [1, 2, 3, 4, 5]
print('原列表:', list10)

# 删除列表中的元素
list10.remove(2)
print(list10)

# 执行结果
# 原列表: [1, 2, 3, 4, 5]
# [1, 3, 4, 5]

Pop

抛出最后一个元素 并返回被删除的元素。

示例如下:

list10 = [1, 2, 3, 4, 5]
print('原列表:', list10)
print(list10.pop())
print(list10.pop())
print(list10)

# 执行结果
# 5
# 4
# [1, 2, 3]

clear

清空列表内容。

示例如下:

list10.clear()
print(list10)

# 执行结果
# 原列表: [1, 2, 3, 4, 5]
# []

列表生成式

列表生成式是“生成列表的公式”的简称。

语法格式:[元素表达式 for 自定义变量 in 可迭代对象]

示例如下:

list11 = [x for x in range(1, 10)]
print(list11)
list12 = [x*2 for x in range(1, 10)]
print(list12)

# 执行结果
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
# [2, 4, 6, 8, 10, 12, 14, 16, 18]

注意:表示列表元素的表达式中需要包含自定义变量

总结

对python 列表数据类型内容进行了整理,包含使用列表原因、特点,创建列表和增删改查及排序操作。

文章来源:https://blog.csdn.net/json_ligege/article/details/135064359
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。