3.列表的常见操作

列表的相关操作

列表中存放的数据是可以进行修改的,比如"增"、"删"、"改"、"查"

<1>添加元素("增"append, extend, insert)

append

通过append可以向列表添加元素

demo:

#定义变量A,默认有3个元素
A = ['xiaoWang','xiaoZhang','xiaoHua']

print("-----添加之前,列表A的数据-----")
for tempName in A:
    print(tempName)
#提示、并添加元素
temp = input('请输入要添加的学生姓名:')
A.append(temp)
print("-----添加之后,列表A的数据-----")
for tempName in A:
    print(tempName)

结果:

extend

通过extend可以将另一个集合中的元素逐一添加到列表中

>>> a = [1, 2]
>>> b = [3, 4]
>>> a.append(b)
>>> a
[1, 2, [3, 4]]
>>> a.extend(b)
>>> a
[1, 2, [3, 4], 3, 4]

insert

insert(index, object) 在指定位置index前插入元素object

>>> a = [0, 1, 2]
>>> a.insert(1, 3)
>>> a
[0, 3, 1, 2]

例子1:

# o -> object -> 对象 (万物皆对象)
# 列表是一个可变的数据类型
# 如果在操作增 删 改 操作的时候是直接改变其本身
#
# 添加元素(append, extend, insert)

# append (追加元素)
# 定义一个列表
my_list = [3, 2]
# # 追加元素
my_list.append(1)
print(my_list)

结果:

[3, 2, 1]

例子2:

# extend
# 只能添加的是可迭代对象
# 会把可迭代对象的进行最小单元拆分 逐一的保存到列表中
# 定义一个列表
my_list = [3, 2]
my_list.extend([4, 5, 6])
print(my_list)

结果:

[3, 2, 4, 5, 6]

例子3(假如没有extend):

my_list = [3, 2, 1]
# 假如没有了extend
for value in [4, 5, 6]:
    my_list.append(value)
print(my_list)

运行结果:

[3, 2, 1, 4, 5, 6]

例子4:

# insert
# 定义一个列表
my_list = [3, 2, 1]
# 插入数据
my_list.insert(-5, "双击666")
print(my_list)

运行结果:

['双击666', 3, 2, 1]

重要点:

append
extend
insert
# 作为一个整体保存的
append
insert
# 只能保存可迭代对象
extend
# 保存的数据在其列表的尾部
append
extend
# 保存的数据在其列表任意位置
insert

练习

demo1

# 从键盘中输入5个学生的名字,存储到列表中,然后打印出每个学生名字中的第2个字符

# # 定义一个列表
student_list = list()
#
# # 如果for循环中的临时变量名不用 可以使用_进行占位
for _ in range(5):
    name = input("请输入一个学生的名字:")
#     # 保存到列表
    student_list.append(name)
#
# # 进行循环遍历
for name in student_list:
#     # 获取名字的第二个字符
    value = name[1]
    print("每个名字的第二个字符是:%s" % value)

运行结果:

请输入一个学生的名字:小张
请输入一个学生的名字:小王
请输入一个学生的名字:小李
请输入一个学生的名字:小康
请输入一个学生的名字:小朱
每个名字的第二个字符是:张
每个名字的第二个字符是:王
每个名字的第二个字符是:李
每个名字的第二个字符是:康
每个名字的第二个字符是:朱

demo2

import random
# 从键盘获取5个学生的名字,然后随机抽出一名学生去打扫卫生
# 定义一个列表
student_list = list()

# 如果for循环中的临时变量名不用 可以使用_进行占位
for _ in range(5):
    name = input("请输入一个学生的名字:")
    # 保存到列表
    student_list.append(name)

# 定义一个变量 保存随机的下标索引
index = random.randint(0, len(student_list) - 1)
print("请%s学生打扫卫生,天意!!!" % student_list[index])

运行结果:

请输入一个学生的名字:小张
请输入一个学生的名字:小李
请输入一个学生的名字:小王
请输入一个学生的名字:小康
请输入一个学生的名字:小朱
请小张学生打扫卫生,天意!!!

<2>修改元素("改")

修改元素的时候,要通过下标来确定要修改的是哪个元素,然后才能进行修改

demo:

#定义变量A,默认有3个元素
A = ['xiaoWang','xiaoZhang','xiaoHua']

print("-----修改之前,列表A的数据-----")
for tempName in A:
    print(tempName)
#修改元素
A[1] = 'xiaoLu'

print("-----修改之后,列表A的数据-----")
for tempName in A:
    print(tempName)

结果:

    -----修改之前,列表A的数据-----
    xiaoWang
    xiaoZhang
    xiaoHua
    -----修改之后,列表A的数据-----
    xiaoWang
    xiaoLu
    xiaoHua

<3>查找元素("查"in, not in, index, count)

所谓的查找,就是看看指定的元素是否存在

in, not in

python中查找的常用方法为:

  • in(存在),如果存在那么结果为true,否则为false
  • not in(不存在),如果不存在那么结果为true,否则false

demo

    #待查找的列表
    nameList = ['xiaoWang','xiaoZhang','xiaoHua']

    #获取用户要查找的名字
    findName = input('请输入要查找的姓名:')

    #查找是否存在
    if findName in nameList:
        print('在字典中找到了相同的名字')
    else:
        print('没有找到')

说明:

in的方法只要会用了,那么not in也是同样的用法,只不过not in判断的是不存在

index, count

index和count与字符串中的用法相同

>>> a = ['a', 'b', 'c', 'a', 'b']
>>> a.index('a', 1, 3) # 注意是左闭右开区间
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 'a' is not in list
>>> a.index('a', 1, 4)
3
>>> a.count('b')
2
>>> a.count('d')
0

例子1:

# 修改和查找元素(in, not in, index, count)

# 修改
# # 定义一个列表
my_list = ["hello", 123, 3.14]

# 取值
# value = my_list[1]

# 修改123为12300
my_list[0] = "python"
print(my_list)

运行结果:

['python', 123, 3.14]

例子2:

# 修改和查找元素(in, not in, index, count)
# 查找元素(in, not in, index, count)
# 定义一个列表
my_list = ["hello", 123, 3.14, 1, True]
# in 判断元素是否存在于列表中
flag = 1231 in my_list
print(flag)
# # 和if语句配合使用
if 123 in my_list:
    pass

# not in
if 234 not in my_list:
    print("234不存在列表中")

例子3:

# 修改和查找元素(in, not in, index, count)
# 查找元素(in, not in, index, count)
# 定义一个列表
my_list = ["hello", 123, 3.14, 1, True]

# index
# 查看元素在列表的位置
# 有返将位置
# 没有将报错
index = my_list.index("hello1")
print(index)

# count
# 计算元素在列表中的出现次数
count = my_list.count(True)
print(count)

<4>删除元素("删"del, pop, remove)

类比现实生活中,如果某位同学调班了,那么就应该把这个条走后的学生的姓名删除掉;在开发中经常会用到删除这种功能。

列表元素的常用删除方法有:

  • del:根据下标进行删除
  • pop:删除最后一个元素
  • remove:根据元素的值进行删除

demo:(del)

    movieName = ['加勒比海盗','骇客帝国','第一滴血','指环王','霍比特人','速度与激情']

    print('------删除之前------')
    for tempName in movieName:
        print(tempName)

    del movieName[2]

    print('------删除之后------')
    for tempName in movieName:
        print(tempName)

结果:

    ------删除之前------
    加勒比海盗
    骇客帝国
    第一滴血
    指环王
    霍比特人
    速度与激情
    ------删除之后------
    加勒比海盗
    骇客帝国
    指环王
    霍比特人
    速度与激情

demo:(pop)

    movieName = ['加勒比海盗','骇客帝国','第一滴血','指环王','霍比特人','速度与激情']

    print('------删除之前------')
    for tempName in movieName:
        print(tempName)

    movieName.pop()

    print('------删除之后------')
    for tempName in movieName:
        print(tempName)

结果:

    ------删除之前------
    加勒比海盗
    骇客帝国
    第一滴血
    指环王
    霍比特人
    速度与激情
    ------删除之后------
    加勒比海盗
    骇客帝国
    第一滴血
    指环王
    霍比特人

demo:(remove)

    movieName = ['加勒比海盗','骇客帝国','第一滴血','指环王','霍比特人','速度与激情']

    print('------删除之前------')
    for tempName in movieName:
        print(tempName)

    movieName.remove('指环王')

    print('------删除之后------')
    for tempName in movieName:
        print(tempName)

结果:

    ------删除之前------
    加勒比海盗
    骇客帝国
    第一滴血
    指环王
    霍比特人
    速度与激情
    ------删除之后------
    加勒比海盗
    骇客帝国
    第一滴血
    霍比特人
    速度与激情

例子1:

# 删除元素(del, pop, remove)
# del 不是方法是关键字删除
# del 列表名[下标索引]
# 定义一个列表
my_list = ["hello", 3.14, 123]

del my_list[1]
print(my_list)

运行结果:

['hello', 123]

例子2:

# 删除元素(del, pop, remove)
# pop
# 删除的元素数值 = 列表名.pop(下标索引)
# 删除的元素数值 = 列表名.pop() -> 删除列表的最后一个元素
# 定义一个列表
my_list = ["hello", 3.14, 123]
my_list.pop(1)
print(my_list)

运行结果:

['hello', 123]

例子3(不指定下标索引默认删除最后一个元素):

# 删除元素(del, pop, remove)
# pop
# 删除的元素数值 = 列表名.pop(下标索引)
# 删除的元素数值 = 列表名.pop() -> 删除列表的最后一个元素
# 定义一个列表
my_list = ["hello", 3.14, 123]
my_list.pop()
print(my_list)

运行结果:

['hello', 3.14]

例子4:

# 删除元素(del, pop, remove)
# remove
# 列表名.remove(元素)
# 定义一个列表
my_list = ["hello", 3.14, 123]
my_list.remove("hello")
print(my_list)

运行结果:

[3.14, 123]

例子5:

# 删除元素(del, pop, remove)

# clear 清空
# # 定义一个列表
my_list = ["hello", 3.14, 123]
my_list.clear()
print(my_list)

运行结果:

[]

<5>排序(sort, reverse)

sort方法是将list按特定顺序重新排列,默认为由小到大,参数reverse=True可改为倒序,由大到小。

reverse方法是将list逆置。

>>> a = [1, 4, 2, 3]
>>> a
[1, 4, 2, 3]
>>> a.reverse()
>>> a
[3, 2, 4, 1]
>>> a.sort()
>>> a
[1, 2, 3, 4]
>>> a.sort(reverse=True)
>>> a
[4, 3, 2, 1]

例子1:

import random
# 列表保存6个元素 每个元素的数值范围在[1, 100]之间

# 定义一个列表
my_list = []
# 循环6次
for _ in range(3):
    # 准备一个随机数值
    value = random.randint(1, 100)
    # 保存到列表中
    my_list.append(value)

print(my_list)

运行结果:

[12, 56, 94, 49, 65, 32]

例子2:

import random
# 列表保存6个元素 每个元素的数值范围在[1, 100]之间

# 定义一个列表
my_list = []
# 循环6次
for _ in range(6):
    # 准备一个随机数值
    value = random.randint(1, 100)
    # 保存到列表中
    my_list.append(value)

print(my_list)

# sort 升序
# 列表名.sort() == 列表名.sort(reverse=False)
my_list.sort()
print(my_list)


my_list.reverse()
print(my_list)

运行结果:

[77, 37, 20, 95, 23, 53]
[20, 23, 37, 53, 77, 95]
[95, 77, 53, 37, 23, 20]

例子3:

# 降序
my_list = [77, 37, 20, 95, 23, 53]
my_list.sort(reverse=True)
print(my_list)

运行结果:

[95, 77, 53, 37, 23, 20]

例子4:

# 字符串 abc [::-1] cba 逆置 倒序
# 列表逆置 倒序
# 列表也支持切片技术
my_list = [77, 37, 20, 95, 23, 53]
ret1 = my_list[::-1]
print(ret1)

运行结果:

[53, 23, 95, 20, 37, 77]

 例子5:

# 倒序
my_list = [86, 33, 87, 36, 83, 95]
my_list.reverse()
print(my_list)

运行结果:

[95, 83, 36, 87, 33, 86]

猜你喜欢

转载自www.cnblogs.com/kangwenju/p/12758088.html