2023.9.28-python学习day06,数据容器认识与列表操作

目录

一.数据容器概念

二.方法与函数对比

三.数据容器之列表

四.列表的下标索引

1.正向索引

2.反向索引

3.列表嵌套的索引

五.列表的增删改查

增:添加元素   

查:查找元素

改:修改元素

删:删除元素   

六.使用循环来遍历列表

1.for循环遍历

2.while循环遍历

3.对比

七.综合练习题目

题目1.将列表中的重复元素去除,并打印

题目2.从范围1-200之间随机生成10个数字添加进列表,并进行索引查找最前和最后一位的数字

题目3.定义一个列表的值,求该列表中最大的值,最小值,以及平均值(保留两位小数)


一.数据容器概念

  • 数据容器含义:  能够存储多个元素的数据类型,叫数据容器
  • 常见的数据容器:  列表(list)  元组(tuple)  字符串(str)   集合(set)   字典(dict)
  • 各个容器符号
  1.     列表list: 中括号 []   举例: [元素1,元素2,元素3,...]
  2.     元组tuple: 小括号 ()   举例: (元素1,元素2,元素3,...)
  3.     字符串str: 引号 '内容'/"内容"/'''内容'''/"""内容"""       注意: 在字符串中每个字符都是一个元素
  4.     集合set: 大括号 {}   举例: {元素1,元素2,元素3,...}
  5.     字典dict: 大括号 {}   举例: {key:value , key:value ,...}  注意: 每个键值对是一个元素    

二.方法与函数对比

# 生成随机数
# 自己不会写这个功能,而且python已经提供了,拿过来用
import random

num = random.randint(1, 10)
print(num)
  • 方法: 本质是一个函数,只是这个函数放到class xxx 类中,上述random中的randint本质是一个函数,一般称之为方法
# 定义一个计算两个数和的函数
def get_sum(a, b):
    return a + b


he = get_sum(1, 10)
print(he)
  • 函数:上述自定义的get_sum就是一个函数

三.数据容器之列表

列表(list)类型,是数据容器的一类,列表一次可以存储多个数据

列表的特点:

  1. 可以容纳多个数据(上线为2**63-1,9223372036854775807个)
  2. 可以容纳不同类型的数据,均被定义为字符串类型
  3. 数据是有序存储的,有下标序号
  4. 允许重复数据存在
  5. 可以进行修改

列表内的每一个数据,称之为元素 以 [ ] 作为标识 列表内每一个元素之间用, 逗号隔开

基本语法:

'''
字面量
[元素1,元素2,元素3,元素4,....]

定义变量
变量名称 = [元素1,元素2,元素3,元素4,....]

定义空列表
变量名称 = []
变量名称 = list()
'''
name_list = ['白', '黑', '黄'] 
 
print(name_list)
print(type(name_list))

'''
输出结果
['白', '黑', '黄']
<class 'list'>
'''

四.列表的下标索引

      1.正向索引

  • 下标索引: 列表中的每一个元素,都有其位置下标索引,从前向后的方向,从0开始,依次递增 我们只需要按照下标索引,即可取得对应位置的元素。
  • 正索引: 从0开始,从左到右,依次递增

    2.反向索引

  • 负索引: 从-1开始,从右到左,依次递减

  • 根据下标索引查找对应元素格式:  列表名[索引]
my_list = ['黑', '666', 'True', 'king']  # 列表可以存储多种数据,均被定义为字符串类型

print(my_list)
print(type(my_list[0]), my_list[0])  # 查找列表元素第一个
print(type(my_list[1]), my_list[1])  # 查找列表元素第二个
print(type(my_list[2]), my_list[2])  # 查找列表元素第三个
print(type(my_list[-1]), my_list[-1])  # 查找列表元素倒数第一个

'''
输出结果:
['黑', '666', 'True', 'king']
<class 'str'> 黑
<class 'str'> 666
<class 'str'> True
<class 'str'> king
'''

3.列表嵌套的索引

# 嵌套列表索引
b_list = [[1, 2, 3], [4, 5, 6]]  # 列表嵌套
print(b_list[0])  # 结果为1,2,3
print(b_list[0][0])  # 结果为1,2,3中的1
name_list = ['白', '黑', '黄']

my_list = ['黑', '666', 'True', 'king']

all_list = [name_list, my_list]

print(f'all_list组合列表中的第0位的是name_list列表,'
      f'他的列表中的元素有{all_list[0]}')

print(f'all_list组合列表中的第1位是my_list列表,'
      f'他的列表中的元素有{all_list[1]}')

print(f'black的中文是{all_list[1][0]},'
      f'white的中文是{all_list[0][-3]}')
'''
输出结果:
all_list组合列表中的第0位的是name_list列表,他的列表中的元素有['白', '黑', '黄']
all_list组合列表中的第1位是my_list列表,他的列表中的元素有['黑', '666', 'True', 'king']
black的中文是黑,white的中文是白

'''

五.列表的增删改查

列表除了可以:

  • 定义
  • 使用下标索引获取值

以外,列表也提供了一系列功能: 插入元素 删除元素 清空列表 修改元素 统计元素个数 等等功能,这些功能我们都称之为:列表的方法

增:添加元素

  •     列表名.append(元素): 把指定元素追加到列表中
  •     列表名.extend(容器): 把指定容器中每个元素取出,依次放到当前列表中
  •     列表名.insert(索引,元素): 把指定元素插入到列表指定索引位置

    

'''
列表的添加功能
insert:在指定下标处,插入指定的元素
append:向列表追加一个元素
extend:将数据容器的内容一次取出,追加的列表尾部
'''

null_list = []  # 创建一个空列表
null_list.append('张三')  # 插入一个元素
null_list.append('李四')
print(null_list)  # ['张三', '李四']

null_list.extend(['王五', '赵六', '田七'])  # 依次各个插入
print(null_list)  # ['张三', '李四', '王五', '赵六', '田七']

null_list.insert(0, '老一')  # 按索引位置来插入元素,0为最前面
print(null_list)  # ['老一', '张三', '李四', '王五', '赵六', '田七']

查:查找元素

  •     列表名[索引]: 查找指定索引位置上的元素
  •     列表名.count(元素): 查找指定元素在列表中出现的次数    
  •     列表名.index(元素): 查找指定元素在列表中的索引位置    注意: 如果不存在就报错
  •     len(列表名): 查询当前列表中所有元素的总个数
'''
列表的查询功能
[索引数字]查询在此索引位置上的数据,0第一,-1最后
len:统计容器内有多少元素
count():统计此元素在列表中出现的次数
index():查找指定元素在列表的下标,找不到会报错
'''
# 接着之前的列表进行操作['老一', '张三', '李四', '王五', '赵六', '田七']

print(null_list[0])  # 查找列表最前面的元素,老一
print(null_list[-1])  # 查表列表倒数第一位元素,田七
print(len(null_list))  # 统计列表中总共有多少元素,6个
print(null_list.count('张三'))  # 统计指定的元素在列表中出现的次数,张三共出现1此
print(null_list.index('赵六'))  # 查找指定元素在列表中的第几位,赵六在从0开始的第4位


改:修改元素

  •     列表名[索引] = 新元素
'''
列表的修改功能
[索引下标数字]='' ,在对应索引位置直接更改元素
'''
  # 接着之前的列表进行操作 ['老一', '张三', '李四', '王五', '赵六', '田七']
null_list[-1] = '老八'  # 把倒数第一位变成'老八'

print(null_list[-1])  # 更改成功后显示最后一位已变为'老八'

print(null_list)  # 原本的田七变成了老八,最终列表变为
# ['老一', '张三', '李四', '王五', '赵六', '老八']

删:删除元素

  •     del 列表名[索引]: 把指定索引位置的元素删除
  •     列表名.pop(索引): 把指定索引位置的元素删除
  •     列表名.remove(元素): 把指定元素直接删除
  •     列表名.clear() : 清空当前列表
  •     del 列表名: 删除当前列表
'''
列表的删除
del [索引位置],删除索引位置上的数字
pop [索引位置],删除索引位置上的数字
remove:删除指定[元素名]
clear:清空列表中所有元素
del 列表名:删除这个列表
'''
# 接着之前的列表进行操作['老一', '张三', '李四', '王五', '赵六', '老八']
del null_list[1]  # 删除索引位置第二位,也就是张三被干掉
print(null_list)  # 列表结果['老一', '李四', '王五', '赵六', '老八']

null_list.pop(-1)  # 删除索引位置倒数第一位,老八被干掉
print(null_list)  # 列表结果['老一', '李四', '王五', '赵六']

null_list.remove('王五')  # 已知元素名的时候,直接删除该元素,王五被干掉
print(null_list)  # 列表结果['老一', '李四', '赵六']

null_list.clear()  # 直接清空列表内所有元素,变成空列表
print(null_list)  # 列表结果[]

del null_list  # 删除该列表
print(null_list)  # 因为列表已被删除,无法进行操作,报错

    

六.使用循环来遍历列表

  •         什么是遍历?将容器内的元素依次取出,并处理,称之为遍历操作

1.for循环遍历


    for 元素名 in 列表:
        操作元素
        

# for,直接遍历列表
name_list = ['老大', '老二', '老三', '老四', '老五']

for i in name_list:  # 将列表中每个元素依次单独提取出来
    print(i)
'''
老大
老二
老三
老四
老五
'''    


2.while循环遍历


    核心思想: 利用while变量作为列表的索引使用
    index = 0
    while index < len(列表):
        元素名 = 列表[index]
        操作元素
        index+=1

name_list = ['老大', '老二', '老三', '老四', '老五']

# while,利用while中变量作为列表的索引使用
i = 0
while i < 5:  # 设置循环结束条件,循环的次数不超过列表元素数量
    # 根据索引去列表中找到对应元素打印
    x = name_list[i]  # x=列表[元素索引下标],
    # 第0次循环  x=name_list[0],x=老大
    # 第1次循环 x=name_list[1],x=老二
    # 第2次循环 x=name_list[2],x=老三
    # 第3次循环 x=name_list[3],x=老四
    # 第4次循环 x=name_list[4],x=老五
    i += 1  # i=i+1 每次循环就加一
    print(x)
'''
老大
老二
老三
老四
老五
'''


        
3.对比


while循环和for循环,都是循环语句,但细节不同:

  • 在循环控制上:

    while循环可以自定循环条件,并自行控制
    for循环不可以自定循环条件,只可以一个个从容器内取出数据

  • 在无限循环上:

    while循环可以通过条件控制做到无限循环
    for循环理论上不可以,因为被遍历的容器容量不是无限

  • 在使用场景上:

        for循环更简单,while循环更灵活

        while循环适用于任何想要循环的场景
        for循环适用于,遍历数据容器的场景或简单的固定次数循环场景

七.综合练习题目

题目1.将列表中的重复元素去除,并打印

ls = [1, 2, 3, 4, 5, 6, 6, 5, 4, 3, 2, 1, 0]
ls_2 = []  # 创建一个空列表,接收去重后的元素
for i in ls:
    if i not in ls_2:  # 如果ls2里没有ls1的元素
        ls_2.append(i)  # 则向ls2列表里追加i遍历出的元素
        # 当ls2列表已经有了某个元素,就不添加已有的元素,做到了去重
print(f'去重后的列表为{ls_2}')

题目2.从范围1-200之间随机生成10个数字添加进列表,并进行索引查找最前和最后一位的数字

import random  # 导包

list1 = []  # 定义一个空列表接收生成的数
for i in range(10):  # 设置循环次数范围,10次
    num = random.randint(1, 200)  # 生成1-200之间的随机数,存进变量num
    list1.append(num)  # 将变量num里的值添加到list1列表,此操作循环10次

print(f'在列表中添加的随机数为{list1},元素数量为{len(list1)},'
      f'列表中第0位元素是{list1[0]},列表最后一位元素数字是{list1[-1]}')

题目3.定义一个列表的值,求该列表中最大的值,最小值,以及平均值(保留两位小数)

list2 = [4, 3, 2, 1, 5, 7, 2, 5, 5, 31, 8, 6, 2]
print(list2)
biggest = max(list2)
smallest = min(list2)
average = sum(list2) / len(list2)  # 列表中所有数值的和,再除以元素的个数就是平均值
print(f'最大值是{biggest}')
print(f'最小值是{smallest}')
print('平均值是%.2f' % average)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白白的wj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值