Day2-------列表

目录

一、基础知识

二、练习

题目1 [加强训练]

题干

训练目标

训练提示

参考方案

操作步骤

参考答案

题目2 [加强训练]

题干

训练目标

训练提示

参考方案

操作步骤

参考答案

题目3 [加强训练]

题干

训练目标

训练提示

参考方案

操作步骤

参考答案


一、基础知识


1、空列表

my_list=[]
my_list1=list()

2、含数据 任意类型数值

my_list2=[1,3.14,True,'isaac']   #布尔类型当作数字

3、列表元素个数

num=len(my_list2)

4、支持下标和切片

a=my_list2[1]
b=my_list2[-1]
c=my_list2[1:3]

5、列表可以使用下标修改数据,字符串不能

my_list2[0]=18
my_list2[-1]='hello'

6、列表遍历

name=['肖战','张杰','白敬亭','邓论']
print('*****for循环******')
for i in name:
    print(i) #每一个数据
print('*****while循环******')
j=0  #下标
while j<len(name):
    print(name[j])
    j+=1

7、列表添加数据 原列表中添加

# append() 尾部追加
name.append('吴磊')
print(name)
# insert(下标,数据)  指定位置添加
name.insert(0,'赵露思')
print(name)
# extend(可迭代对象) 将可迭代对象中的数据逐个添加到原列表末尾
name2=['迪丽热巴','杨幂','唐嫣','肖战']
name.extend(name2)
print(name)

8、列表查询操作、删除、排序、嵌套

# index() 找到某元素下标 没有find()方法 数据不存在则报错
print(name.index('肖战'))
# count() 统计出现次数
print(name.count('肖战'))
# in/not 存在是True  不存在是False
print('肖战' in name)

# 列表删除操作
# 根据元素数据值删除 remove(数值) 数据不存在则报错
name.remove('杨幂')
print(name)
# 根据元素下标删除 pop() 默认删除最后一个数据,返回删除内容
print(name.pop())
print(name.pop(3))
print(name)
# 根据元素下标删除 del 列表[下标] 下标不存在则报错
del name[3]
print(name)

# 列表排序(列表中数据类型一样)与逆置
number=[1,3,2,77,42,67,123,75,22,21,2,7]
# sort() 直接在原列表进行排序
number.sort() # 默认升序
print(number)
number.sort(reverse=True) # 降序reverse=True
print(number)
# sorted() 不在原列表进行排序,会得到新列表
a=sorted(number) # 升序、降序同sort()
print(a)
# 逆置
str_1=['a','b','c','d','e','f']
print(str_1[::-1])
str_1.reverse()
print(str_1)

# 列表嵌套
school_names=[['北京大学','清华大学'],
              ['南开大学','天津大学','天津师范大学'],
              ['西安石油大学','西安工业大学']]
print(school_names[1])
print(school_names[1][1])
print(school_names[1][1][1])
for schools in school_names:
    for name in schools:
        print(name)

9、小案例

# 分配办公室 一个学校有三个办公室,有八位老师等待工位分配,请完成随机分配

import random
offices=[[],[],[]]
names=['赵露思', '肖战', '张杰', '白敬亭', '邓伦', '吴磊', '迪丽热巴','金韩']
for name in names:
    index=random.randint(0,2)
    offices[index].append(name)
for temp_names in offices:
    print(f'该办公室的人数为{len(temp_names)}')
    print(temp_names)
    for teacher in temp_names:
        print(f'办公室的老师为{teacher}')

二、练习

题目1 [加强训练]

题干

有一个列表,判断列表中的每一个元素是否以s或e结尾,如果是,则将其放入一个新的列表中,最后输出这个新的列表

list = ["red", "apples", "orange", "pink", "bananas", "blue", "black", "white"]

训练目标

让学员知道列表的循环和值的获取,以及列表的操作方法

训练提示

  1. 如何找到列表中的每一个元素?
  2. 如何判断列表中的元素以什么字符结尾?

参考方案

  1. 使用循环遍历的方式获取列表中的每一个元素?
  2. 列表中的元素为字符串,所以可以使用下标[-1] 来获取最后一个字符的值,然后判断.

操作步骤

  1. 遍历列表中的每一个元素
  2. if 判断 最后一个字符是否是s或者e
  3. 如果是,使用 append() 方法,将数据追加到新的列表中.

参考答案

my_list = ["red", "apples", "orange", "pink", "bananas", "blue", "black", "white"]

# 用来存放以e或者s结尾的字符串
new_list = []

for i in my_list:
    # 判断列表中每一个元素是否以s或e结尾
    if i[-1] == 's' or i[-1] == 'e':
        new_list.append(i)

# 打印出这个新的列表
print(new_list)

方法二:

使用字符串中的方法来判断.

my_list = ["red", "apples", "orange", "pink", "bananas", "blue", "black", "white"]

# 用来存放以e或者s结尾的字符串
new_list = []

for i in my_list:
    # 判断列表中每一个元素是否以s或e结尾
    if i.endswith('s') or i.endswith('e'):
        new_list.append(i)

# 打印出这个新的列表
print(new_list)

题目2 [加强训练]

题干

给定一个列表,首先删除以s开头的元素,删除后,修改第一个元素为"joke",并且把最后一个元素复制一份,放在joke的后边

my_list = ["spring", "look", "strange", "curious", "black", "hope"]

训练目标

列表的相关操作

训练提示

  1. 通过for循环遍历列表,获取到每一个元素
  2. 通过列表的操作方法对列表进行修改

参考方案

  1. 通过for循环获取每一个元素
  2. 通过remove删除列表中的元素
  3. 通过insert函数在指定位置插入元素

操作步骤

  1. 通过for循环获取每一个元素,判断是否以s开头
  2. 如果条件成立,则通过remove删除选中的元素
  3. 获取到最后一个元素,通过replace将元素放在指定的位置上

参考答案

my_list = ["spring", "look", "strange" "curious", "black", "hope"]

for i in my_list[:]:
    # 删除以s开头的元素,
    if i[0] == 's':
        my_list.remove(i)

# 修改第一个元素为"joke"
my_list[0] = "joker"

# 获取最后一个元素
last_one = my_list[-1]

# 将最后一个元素放在joke的后面
my_list.insert(1, last_one)

print(my_list)

题目3 [加强训练]

题干

将下列两个列表合并,将合并后的列表去重,之后降序并输出

list1 = [11,  4, 45, 34, 51, 90]
list2 = [4, 16, 23, 51, 0]

训练目标

列表操作方法的使用

训练提示

  1. 如何合并两个列表?
  2. 如何进行列表去重?
  3. 如何排序并降序输出?

参考方案

  1. 合并列表可以使用 extend()方法或者两个列表相加。
  2. 列表去重有两种方案
  3. 自己实现方法实现,借助一个新的列表,循环遍历原列表,判断元素是否在新的列表中,如果在,遍历下一个元素,如果不在,添加到新的列表中。
  4. 使用 set() 集合去重
  5. sort 函数可以实现排序,参数reverse=True对列表进行倒序排序

操作步骤

1,使用 + 对列表进行拼接(或者使用 extend) 2,列表去重 3,使用sort函数,参数reverse=True对列表进行倒序排序

参考答案

方案 1

list1 = [11, 4, 45, 34, 51, 90]
list2 = [4, 16, 23, 51, 0]

# 1. 使用 + 合并两个列表
my_list = list1 + list2

# 2. 列表去重
# 2.1 定义新的空列表保存去重后的数据
my_list1 = []
# 2.2 遍历合并后的列表
for i in my_list:
    # 2.3 判断i 是否在my_list1 中
    if i in my_list1:
        # 2.3.1 如果存在,直接下一次循环
        continue
    else:
        # 2.3.2 将i添加到my_list1 中.
        my_list1.append(i)

# 3. 循环结束,得到去重后的列表 my_list1,进行排序
my_list1.sort(reverse=True)

# 4. 输出最后的结果
print(my_list1)

方案 2 暂时不用管后边会学习

使用集合(set), 去重,

set 也是一个容器,具有自动去重的功能(后续会学习)

目前只需要了解即可.

list1 = [11, 4, 45, 34, 51, 90]
list2 = [4, 16, 23, 51, 0]

# 列表拼接
list3 = list1 + list2

# 列表去重
list4 = set(list3)
list5 = list(list4)

# 列表降序输出
list5.sort(reverse=True)

print(list5)

猜你喜欢

转载自blog.csdn.net/m0_46493223/article/details/126052601