列表及其增删改查

  • 1 什么是列表?
  • 2 列表的查操作
  • 1. 查单个元素
  • 2. 切片
  • 3. 遍历
  • 3 列表的增删改操作
  • 1. 增 添加元素
  • 2. 删 删除元素
  • 3. 改 修改元素的值



列表在需要同时处理多个数据的时候非常有用。

1 什么是列表?

  1. 列表是容器型数据类型,将[]作为容器的标志,里面多个元素用逗号隔开。
    🌸[数据1,数据2,数据3,...]
  2. 特点
    1)列表是可变的(可变指的是容器中元素的个数和值可变,即支持增删改)
    2)列表是有序的(支持下标操作、索引操作)
  3. 元素没有要求

任何类型的数据都可以作为列表的数据,同一个列表中的元素的类型还可以不一样。

  1. 1) 空列表:列表里面一个元素都没有的时候。
list=[]
list=[ ]
list=''

2) 列表中的元素可以是任何类型的数据。

list1=[10,9.29,False,None,'abc',[1,2,3]]

3)列表是有序的(顺序影响结果)。

print([1,2,3]==[1,3,2])		#False
print({1,2,3}=={1,3,2})		#True(集合无序)

2 列表的查操作

1. 查单个元素

即一次获取一个元素。

🌸语法:

列表[下标]		获取指定列表中指定下标对应的元素

结构说明:

结构

说明

列表

需要获取元素的列表(可以是任何结果是列表的表达式,比如:保存列表的变量、具体的列表数据等)

[]

固定写法

下标

下标又叫索引,是列表中元素在列表中的位置信息。列表中的每个元素都有两个索引值,一个是从前往后,从0(第一个)开始不断增加的;另一个是从后往前,从-1(最后一个)开始不断减小。

下标不能越界。

🌰

nums=[100,99,98]
print(nums[0],nums[-3])		#100 100

2. 切片

一次获取多个元素(一次有规律的获取多个元素)。

🌸语法:

列表[开始下标:结束下标:步长]		根据下标和步长获取指定列表中的部分元素

1)怎么确定切片结果

步骤:

🥇第一步:确定结果是否为空列表(看从开始下标到结束下标的方向和步长对应的方式是否一致,如果方向一致结果一定不为空,反之结果肯定是空)

步长为正:表示从前往后取

步长为负:表示从后往前取

🥈第二步:确定有效范围(开始下标对应的元素取得到,结束下标对应的元素取不到)。

🥉第三步:在有效范围内,按照步长的绝对值确定获取内容。

如果绝对值为1,在有效范围内一个一个按顺序获取。

如果绝对值是2,在有效范围内,取一个跳1个再取一个。

如果绝对值是3,在有效范围内,取一个跳2个再取一个。

🌰

heroes = ['王昭君', '孙斌', '李白', '百里守约', '墨子', '澜', '孙悟空', '诸葛亮', '李信', '妲己']
print(heroes[1:4:1])
print(heroes[1:4:1])

2)怎么写切片

🥇第一步:确定开始下标(目标对应的第一个元素对应的下标)。

🥈第二步:确定步长。

确定正负号:看目标元素在原列表中的顺序是从前往后(+)还是从后往前(-)。

确定绝对值。

🥉第三步:确定结束下标。

3)切片的省略写法

正常写法:列表[开始下标:结束下标:步长]

a.省略步长 相当于步长为1

列表[开始下标:结束下标]

🌰

print(heroes[1:4])
print(heroes[-1:4])	#[]

b.省略开始下标 表示从头开始(看步长的正负,开始下标在第一个或者最后一个)

列表[:结束下标:步长]、列表[:结束下标]

🌰

print(heroes[:4:2])	#['王昭君','李白']
print(heroes[:4:-2])	#['妲己','诸葛亮','澜']
print(heroes[:-4])	#['王昭君', '孙斌', '李白', '百里守约', '墨子', '澜']

c.省略结束下标 如果步长为正就从开始下标开始一直取到最后一个元素;如果步长为负就从开始下标开始一直取到第一个元素

列表[开始下标::步长]

🌰

print(heroes[1::2])		#['孙斌','百里守约','澜','诸葛亮',妲己']
print(heroes[-3::-1])	#['诸葛亮', '孙悟空', '澜', '墨子', '百里守约', '李白', '孙斌', '王昭君']
print(heroes[::-3])		#['妲己','孙悟空','百里守约','王昭君']
print(heroes[:])		#['王昭君', '孙斌', '李白', '百里守约', '墨子', '澜', '孙悟空', '诸葛亮', '李信', '妲己']

3. 遍历

一个一个的获取列表中所有的元素
1)方法1 循环体中的变量直接是列表的元素

for 变量 in 列表:
    循环体

🌰

games=['王者荣耀','开心消消乐','植物大战僵尸']
for i in games:
    print(i)

2)方法2 通过下标来遍历列表
循环体变量获取到的是每个元素的下标,然后需要通过:列表[下标]再获取元素

for 变量 in range(len(列表)):
    循环体

🌰

for i in range(len(games)):
    print(i,games[i])

3)方法3:同时获取下标和元素

for 变量1,变量2 in enumerate(列表)
	循环中变量1是每个元素的下标值。

🌰

for i item in enumerate(games):
    print(i,item)

🌰练习1:计算nums中所有元素的和

nums = [12, 45, 8.34, 56, 23]
sum = 0
for i in nums:
    sum += i
print(sum)
结果:
144.34

🌰练习2:统计nums中所有偶数的个数

nums = [23, 88, 90, 88, 67, 55, 11]
count = 0
for i in nums:
    if i % 2 == 0:
        count += 1
print(count)
结果:
3

🌰练习3: 统计list1中字符串的个数

list1 = [109, 23.4, True, 'abc', 'helo', 23, '12', False, None]
count = 0
for i in range(len(list1)):
    if type(list1[i]) == str:
        count += 1
print(count)
结果:
3

3 列表的增删改操作

1. 增 添加元素

1)列表.append(元素) 在列表的最后添加指定元素

nums=[1,2,3]
print(nums)		#[1,2,3]
nums.append(4)
print(nums)		#[1,2,3,4]

2)列表.insert(下标,数据) 在列表指定下标对应元素前插入指定数据

nums=[1,2,3]
print(nums)		#[1,2,3]
nums.insert(2,4)
print(nums)		#[1,2,4,3]
nums.insert(-1,4)
print(nums)		#[1,2,4,3]

🌰练习:使用一个新的列表提取nums中所有的偶数

nums = [17, 89, 90, 81, 84, 4, 56]
# [90, 84, 4, 56]
num = []
for i in nums:
    if i % 2 == 0:
        num.append(i)
print(num)

2. 删 删除元素

1)del 列表[下标] 删除列表中指定下标对应的元素

games = ['王者荣耀', 'lol', '和平精英', '永劫无间', 'apex', '2k', '植物大战僵尸', '开心消消乐']
del games[2]
print(games)

2)列表.remove(元素) 删除列表中指定元素(元素不存在会报错;如果有多个相同的元素,只会删除第一个)

games = ['王者荣耀', 'lol', '和平精英', '永劫无间', 'apex', '2k', '植物大战僵尸', '开心消消乐']
games.remove('植物大战僵尸')
print(games)

3)列表.pop()

  • 列表.pop() 取出列表最后一个元素
    列表.pop(下标) 取出列表指定下标对应的元素

3. 改 修改元素的值

表[下标]=新元素		修改列表中指定下标对应的元素为新的元素