1、列表的概念

(1)列表的定义

  • 列表是Python中一种基本的数据结构。列表存储的数据,我们称为元素。在列表中的每个元素都会有一个下标来与之对应,第一个索引是0,第二个索引是1,依此类推的整数。
  • 列表里可以同时储存不同的数据类型,列表里也可以嵌套列表(列表本身也是一种数据类型)。
  • 对列表的操作包括通过索引下标查找展示,通过切片来获取指定部分列表数据。
  • 列表中的对象都会按照插入的顺序存储到列表中,第一个插入的对象保存到第一个位置,第二个保存到第二个位置,则可以称之为列表中的数据有序。
  • 列表是可变类型的数据类型,所以列表是有序的可变的元素集合。

(2)列表的应用场景

思考:有一个人的姓名TOM,怎么存储这个数据?

答:通过变量。

思考:如果一个班级100位学生,每个人的姓名都要存储,应该如何书写程序?声明100个变量吗?

答:列表即可, 列表一次性可以存储多个数据。

(3)列表的定义格式

[数据1, 数据2, 数据3, 数据4......]

示例

# 1、创建了一个空列表
my_list = []
# 查看列表的类型
print(type(my_list)) # <class 'list'> """
空列表只表示你再内存中开辟了一个空间
用于存储数据,但是现实里边没有任何数据。
""" # 2、创建一个有数据的列表
# 一个列表中可以存储多个元素,
# 也可以在创建列表时,来指定列表中的元素 # (1)创建一个只包含一个元素的列表
my_list = [10]
print(my_list) # (2)创建一个包含多个元素的列表
# 多个元素之间使用,隔开
my_list = [10,20,30,40,50]
print(my_list) # 3、列表中可以保存任意的对象,包括函数。
# 结果:[10, 'hello', True, None, [1, 2, 3], <built-in function print>]
my_list = [10,'hello',True,None,[1,2,3],print]

注意:

  • 可以说列表是用来存储对象的对象,列表可以存储所有的数据类型,包括函数都可以同时存储在一个列表中。
  • 但是在我们日常开发中使用列表的时候,一个列表中尽量存储相同的数据类型。
  • 因为不同的数据类型的操作方法是不同的,将来如果要对列表中的数据进行操作,就需要判断各种数据的类型,然后在操作数据,这样就非常麻烦了。

2、列表的常用操作

列表的作用是一次性存储多个数据,程序员可以对这些数据进行的操作有:增、删、改、查。

(1)列表的查找

1)通过下标查找

我们可以通过索引(index)来获取列表中的元素。

索引是元素在列表中的位置,列表中的每一个元素都有一个索引,索引是从0开始的整数,列表第一个位置索引为0,第二个位置索引为1,第三个位置索引为2,以此类推。

name_list = ['Tom', 'Lily', 'Rose']

print(name_list[0])  # Tom
print(name_list[1]) # Lily
print(name_list[2]) # Rose # 如果使用的索引超过了最大的范围,会抛出异常。
# IndexError: list index out of range
print(name_list[3]) # 异常

提示:列表的下标(索引)和字符串下标(索引)的用用法是一样的。包括正负取值,可以参考着字符串一起学习,这里不在通过列表在说明了。

2)通过方法查找

@1、index()方法

index()方法:返回指定数据所在位置的下标 。

(用法同字符串中index()方法的用法一样)

语法:

列表序列.index(数据, 开始位置下标, 结束位置下标)

快速体验:

name_list = ['Tom', 'Lily', 'Rose']

print(name_list.index('Lily', 0, 2))  # 1

注意:如果查找的数据不存在则报错。

@2、count()方法

count()方法:统计指定数据在当前列表中出现的次数。

(用法同字符串中count()方法的用法一样)

name_list = ['Tom', 'Lily', 'Rose']

print(name_list.count('Lily'))  # 1

@3、len()方法

len()方法:获取列表的长度,即列表中元素的个数。(是一个通用方法)

name_list = ['Tom', 'Lily', 'Rose']
name_list_len = len(name_list)
print(name_list_len) # 3

注意: 获取到的长度的值,是列表的最大索引+1。所以以后在用到列表的最大索引的时候,使用len()-1

3)判断是否存在

这两个方法都是公共方法,代表列表,元祖,字典,字符串都支持的操作。

@1、in

in:判断指定数据是否存在于列表中,如果在返回True,否则返回False

name_list = ['Tom', 'Lily', 'Rose']

# 结果:True
result = 'Lily' in name_list
print(result) # 结果:False
result1 = 'Lilys' in name_list
print(result1)

@2、not in

not in:判断指定数据是否不在某个列表序列,如果不在返回True,否则返回False。

name_list = ['Tom', 'Lily', 'Rose']

# 结果:False
result = 'Lily' not in name_list
print(result) # 结果:True
result1 = 'Lilys' not in name_list
print(result1)

示例:

需求:判断用户输入的名字是否已经存在,如果存在,提示用户已存在,否则提示可以注册。

name_list = ['Tom', 'Lily', 'Rose']

name = input('请输入您要搜索的名字:')

if name in name_list:
print(f'您输入的名字是{name}, 名字已经存在')
else:
print(f'您输入的名字是{name}, 名字不存在')

(2)列表的增加

作用:增加指定数据到列表中。

@1、append()方法

append()方法:向列表的结尾添加一个元素。

1)语法

列表序列.append(数据)

2)示例

"""
输出结果:
修改前: ['Tom', 'Lily', 'Rose']
修改后: ['Tom', 'Lily', 'Rose', '孙悟空']
"""
name_list = ['Tom', 'Lily', 'Rose']
print("修改前:", name_list)
name_list.append('孙悟空')
print("修改后:", name_list)

注意一点,列表追加数据的时候,直接在原列表里面追加了指定数据,即修改了原列表,故列表为可变类型数据。

3)追加一个序列

如果append()方法追加的数据是一个序列,则追加整个序列到列表的结尾。

"""
输出结果:
修改前: ['Tom', 'Lily', 'Rose']
修改后: ['Tom', 'Lily', 'Rose', ['孙悟空', '猪八戒']]
"""
name_list = ['Tom', 'Lily', 'Rose']
print("修改前:", name_list)
name_list.append(['孙悟空','猪八戒'])
print("修改后:", name_list)

@2、extend()方法

extend()方法:列表结尾追加数据,数据一定是一个序列,则把数据序列里面的数据拆,开然后逐一追加到列表的结尾。

1)语法

列表序列.extend(数据)

2)快速体验

name_list = ['Tom', 'Lily', 'Rose']

"""
1、单个数据
输出结果:
修改前: ['Tom', 'Lily', 'Rose']
修改后: ['Tom', 'Lily', 'Rose', '孙', '悟', '空']
"""
print("修改前:", name_list)
name_list.extend('孙悟空')
print("修改后:", name_list) """
2、序列数据
输出结果:
修改前: ['Tom', 'Lily', 'Rose']
修改后: ['Tom', 'Lily', 'Rose', '孙悟空', '猪八戒']
"""
name_list = ['Tom', 'Lily', 'Rose']
print("修改前:", name_list)
name_list.extend(['孙悟空','猪八戒'])
print("修改后:", name_list) """
3、extend()方法和+=的效果是一样的
输出结果:
修改前: ['Tom', 'Lily', 'Rose']
修改后: ['Tom', 'Lily', 'Rose', '孙悟空', '猪八戒']
"""
name_list = ['Tom', 'Lily', 'Rose']
print("修改前:", name_list)
name_list += (['孙悟空','猪八戒'])
print("修改后:", name_list) """
4、传入非序列数据
输出结果:
异常:
TypeError: 'int' object is not iterable
"""
name_list = ['Tom', 'Lily', 'Rose']
print("修改前:", name_list)
name_list.extend(123)
print("修改后:", name_list)

@3、insert()方法

insert()方法:向列表的指定位置插入一个元素。

1)语法

列表序列.insert(位置下标, 数据)

2)快速体验

"""
输出结果:
修改前: ['Tom', 'Lily', 'Rose']
修改后: ['Tom', '孙悟空', 'Lily', 'Rose']
"""
name_list = ['Tom', 'Lily', 'Rose']
print("修改前:", name_list)
name_list.insert(1, '孙悟空')
print("修改后:", name_list)

(3)列表的删除

@1、del

del:可以通过del删除指定下标的数据。

1)语法

del 目标

2)快速体验

name_list = ['Tom', 'Lily', 'Rose']

# 1、删除列表
# 结果:报错提示:name 'name_list' is not defined
# 证明name_list列表被删除,已经不存在了。
del name_list
print(name_list) # 2、删除指定数据
# 删除索引为1的元素
"""
输出结果:
删除前: ['Tom', 'Lily', 'Rose']
删除后: ['Tom', 'Rose']
"""
name_list = ['Tom', 'Lily', 'Rose']
print("删除前:", name_list)
del name_list[1]
print("删除后:", name_list)

@2、pop()方法

pop()方法:删除指定下标的数据,如果不指定下标,默认删除最后一个数据,无论是按照下标还是删除最后一个数据,pop()方法都会返回这个被删除的数据。

1)语法

列表序列.pop(下标)

2)快速体验

"""
1、默认删除最后一个数据
输出结果:
删除前: ['Tom', 'Lily', 'Rose']
删除后: ['Tom', 'Lily']
删除的数据: Rose
"""
name_list = ['Tom', 'Lily', 'Rose']
print("删除前:", name_list)
del_name = name_list.pop()
print("删除后:", name_list)
print("删除的数据:", del_name) """
2、删除指定下标的数据
输出结果:
删除前: ['Tom', 'Lily', 'Rose']
删除后: ['Tom', 'Rose']
删除的数据: Lily
"""
name_list = ['Tom', 'Lily', 'Rose']
print("删除前:", name_list)
del_name = name_list.pop(1)
print("删除后:", name_list)
print("删除的数据:", del_name)

@3、remove()方式

remove()方式:根据元素的值进行删除,移除列表中某个数据的第一个匹配项。该方法没有返回值。

1)语法

列表序列.remove(数据)

2)快速体验

"""
输出结果:
删除前: ['Tom', 'Lily', 'Rose', 'Tom']
删除后: ['Lily', 'Rose', 'Tom']
"""
name_list = ['Tom', 'Lily', 'Rose', 'Tom']
print("删除前:", name_list)
name_list.remove('Tom')
print("删除后:", name_list)

@4、clear()方法

clear()方法:清空列表。

示例:

"""
输出结果:
清空前: ['Tom', 'Lily', 'Rose']
清空后: []
"""
name_list = ['Tom', 'Lily', 'Rose']
print("清空前:", name_list)
name_list.clear()
print("清空后:", name_list)

(4)列表的修改

@1、修改指定下标数据

"""
输出结果:
修改前 ['Tom', 'Lily', 'Rose']
修改后 ['孙悟空', 'Lily', 'Rose']
"""
name_list = ['Tom', 'Lily', 'Rose']
print("修改前", name_list)
name_list[0] = '孙悟空'
print("修改后", name_list)

@2、reverse()方法

reverse()方法:逆置(反转)

"""
输出结果:
修改前: ['孙悟空', '猪八戒', '沙和尚', '唐僧']
修改后: ['唐僧', '沙和尚', '猪八戒', '孙悟空']
"""
name_list = ['孙悟空','猪八戒','沙和尚','唐僧']
print("修改前:", name_list)
name_list.reverse()
print("修改后:", name_list)

@3、sort()方法

sort()方法:排序

1)语法

列表序列.sort( key=None, reverse=False)

注意:reverse表示排序规则,reverse = True 降序,reverse = False 升序(默认)。

key选项是列表中如果有字典数据,按照字典的key进行排序的时候会用到。

2)快速体验

"""
输出结果:
修改前: [1, 5, 2, 3, 6, 8]
修改后: [1, 2, 3, 5, 6, 8]
"""
num_list = [1, 5, 2, 3, 6, 8]
print("修改前:", num_list)
num_list.sort()
print("修改后:", num_list) """
# 降序
输出结果:
修改前: ['a', 'j', 'j', 'a', 'f', 'a', 'o', 'u', 'i', 'g', 'h', 'a', 'd', 'j']
修改后: ['u', 'o', 'j', 'j', 'j', 'i', 'h', 'g', 'f', 'd', 'a', 'a', 'a', 'a']
"""
num_list = list('ajjafaouighadj')
print("修改前:", num_list)
num_list.sort(reverse = True)
print("修改后:", num_list)

(5)列表的复制

copy()方法

复制以后的对象,和原对象是独立,修改一个不会影响另一个。

"""
输出结果:
name_list列表: ['Tom', 'Lily', 'Rose']
name_list2列表: ['Tom', 'Lily', 'Rose']
"""
name_list = ['Tom', 'Lily', 'Rose']
name_list2 = name_list.copy()
print("name_list列表:", name_list)
print("name_list2列表:", name_list2)

注意:copy()方法字典也通用。

『无为则无心』Python序列 — 18、Python列表概念及常用操作API的更多相关文章

  1. 『无为则无心』Python序列 — 23、Python序列的公共API

    目录 1.运算符 @1.+加号 @2.*乘号 @3.in或not in 2.公共方法 @1.len()方法 @2.del和del() @3.max()方法 @4.min()方法 @5.range() ...

  2. 『无为则无心』Python序列 — 17、Python字符串操作常用API

    目录 1.字符串的查找 @1.find()方法 @2.index()方法 @3.rfind()和rindex()方法 @4.count()方法 2.字符串的修改 @1.replace()方法 @2.s ...

  3. 『无为则无心』Python序列 — 24、Python序列的推导式

    目录 1.列表推导式 (1)快速体验 (2)带if的列表推导式 (3)多个for循环实现列表推导式 2.字典推导式 (1)创建一个字典 (2)将两个列表合并为一个字典 (3)提取字典中目标数据 3.集 ...

  4. 『无为则无心』Python序列 — 19、Python列表的其他操作(切片和遍历)

    目录 1.通过切片对列表的操作 (1)通过切片对列表进行修改 (2)通过切片对列表进行删除 (3)注意 2.列表的循环遍历 (1)while循环遍历 (2)for循环遍历 3.列表嵌套 4.综合示例 ...

  5. 『无为则无心』Python基础 — 10、Python字符串的格式化输出

    目录 1.什么是格式化输出 2.Python格式化输出的五种方式 方式一:字符串之间用+号拼接 方式二:print()函数可同时输出多个字符串 方式三:占位符方式 方式四:f格式化方式(推荐) 方式五 ...

  6. 『无为则无心』Python基础 — 12、Python运算符详细介绍

    目录 1.表达式介绍 2.运算符 (1)运算符的分类 (2)算数运算符 (3)赋值运算符 (4)复合赋值运算符 (5)比较运算符 3.逻辑运算符 拓展1:数字之间的逻辑运算 拓展2:Python中逻辑 ...

  7. 『无为则无心』Python基础 — 13、Python流程控制语句(条件语句)

    目录 1.流程控制基本概念 2.选择结构(条件语句) (1)条件语句概念 (2)if语句语法 (3)if...else...语句 (4)多重判断 (5)if语句嵌套 3.应用:猜拳游戏 4.三元运算符 ...

  8. 『无为则无心』Python基础 — 62、Python中自定义迭代器

    目录 1.迭代器对象的创建 2.实际应用案例 3.总结: 1.迭代器对象的创建 迭代器是一种可以被遍历的对象,并且能够作用于next()函数,迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问 ...

  9. 『无为则无心』Python基础 — 4、Python代码常用调试工具

    目录 1.Python的交互模式 2.IDLE工具使用说明 3.Sublime3工具的安装与配置 (1)Sublime3的安装 (2)Sublime3的配置 4.使用Sublime编写并调试Pytho ...

随机推荐

  1. Nginx导航

    简介 最近都在弄微服务的东西,现在来记录下收获.我从一知半解到现在能从0搭建使用最大的感触有两点 1.微服务各大组件的版本很多,网上很多博客内容不一定适合你的版本,很多时候苦苦琢磨都是无用功 2.网上 ...

  2. [bug] logback error FileNotFoundException

    问题 在gitee上下载的项目,运行报错 原因 原程序中设置了日志保存路径,我的电脑没有,需要手动创建 参考 https://blog.csdn.net/danchaofan0534/article/ ...

  3. Linux 实验楼

    网络上的免费在线 Linux 实验系统 Wu Zhangjin 创作于 2014/01/12 打赏 by falcon of TinyLab.org 2014/01/12 这里收集各类可以直接在线访问 ...

  4. [刷题] 220 Contains Duplicate III

    要求 给出整型数组nums和整数k,是否存在索引i和j 使得nums[i]和nums[j]之差不超过t,且i和j之差不超过k 思路 建立k个元素的有序查找表 每次有新元素加入,寻找查找表中大于 num ...

  5. [转载]层叠与并排win10

    三. 层叠与并排 如果要排列的窗口超过4个,分屏就显得有些不够用了,这时不妨试一试最传统的窗口排列法.具体方法是,右击任务栏空白处,然后选择"层叠窗口"."并排显示窗口& ...

  6. fedora21 桌面用户自动登录lightdm.conf -20190520 方法

    修改 /etc/lightdm/lightdm.conf 步骤:1解除注释#autologin-user=root 2等号 =后面是root或者普通用户的用户名 例如:root用户自动登录 autol ...

  7. ]# dmesg | grep ATAcentos下查看网卡,主板,CPU,显卡,硬盘型号等硬件信息

    centos下查看网卡,主板,CPU,显卡,硬盘型号等硬件信息 osc_4o5tc4xq 2019/10/11 15:03 阅读数 253 centos下查看网卡,主板,CPU,显卡,硬盘型号等硬件信 ...

  8. 攻防世界(三)Web_php_unserialize

    攻防世界系列:Web_php_unserialize 0x01.代码审计 1.类Demo中struct().destruct()函数分别在代码执行开始和结束时调用.而wakeup函数会在代码执行过程中 ...

  9. CentOS 7 网络配置详解

    今天在一台PC上安装了CentOS 7,当时选择了最小安装模式,安装完成后马上用ifconfig查看本机的ip地址(局域网已经有DHCP),发现报错,提示ifconfig命令没找到. ? 1 2 3 ...

  10. 微信小程序使用同声传译实现语音识别功能

    我使用同声传译语音识别功能是为了实现微信小程序首页的语音搜索功能,如果你也是那么恭喜你,你可以ctrl+c.ctrl+v再改一改,如果你不是那么你也不要着急的走可以看完我的文章会对你有所帮助! 首先是 ...