Python学习之路——数据容器部分【列表(list)】

2023-12-27 21:27:16

一、什么是数据容器呢

(一)分类

二、列表

(一)定义

(二)嵌套列表的定义

(三)列表的下表索引

(四)反向列表

(五)嵌套列表

(六)列表的常用操作?

1、方法总览

(七)遍历列表

1、while循环和for循环的区别

2、练习案例

三、总的来说


一、什么是数据容器呢

????????一种可以容纳多份数据的数据容器,容纳的每一份数据称之为一个元素,每一个元素,可以是任意类型的数据,如:字符串数字布尔等等

(一)分类

????????数据容器根据特点的不同,可分为5类:

  • 是否支持重复元素
  • 是否可以修改
  • 是否有序等

分别是:列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)

二、列表

(一)定义

# 字面量

[元素1, 元素2, 元素3, ……]


# 定义变量

变量名称 = [元素1, 元素2, 元素3, ……]


# 定义空列表

变量名称 = []
变量名称 = list()

列表内的每一个数据,称之为元素

  • 以?[ ]?作为标识
  • 列表内每一个元素之间用?,?隔开

(二)嵌套列表的定义

my_list = [[1, 2, 3], [4, 5, 6]]
print(my_list)
print(type(my_list))

输出结果:

(三)列表的下表索引

如上图:列表中的每一个元素,都有其位置下标索引,从前向后的方向,从0开始,依次递增

代码演示:

def func02():
    my_list = ['I', 'belive', 'in', 'you.']
    for i in range(len(my_list)):
        """ 
            len(my_list)表示my_list这个列表的长度
            因为range的取值默认是从 0 开始的
            然后最后一个值又取不到
            所以说正好拿来遍历列表
        """
        print(f'{my_list[i]} ', end="")


if __name__ == '__main__':
    func02()

(四)反向列表

或者,可以反向索引,也就是从后向前:从-1开始,依次递减(-1, -2, -3, ……)

(五)嵌套列表

如果是嵌套的列表,同样支持下表索引

来个小案例试试手:

? ? 我想要取到day这个单词,分别使用正向索引与反向索引

def func03():
    my_list = [
        ['Listen', 'to', 'your', 'heart.'],
        ['Each', 'day', 'brings', 'a', 'new', 'beginning.']
    ]
    # 我想要取到day这个单词,分别使用正向索引与反向索引
    # 正向索引:
    print(my_list[1][1])
    # 反向索引:
    print(my_list[-1][-5])

(六)列表的常用操作?

列表除了可以:定义使用下表索引获取值以外,还可以插入元素删除元素清空列表修改元素统计元素个数等等功能,这些功能我们都称之为:列表的方法

1、方法总览

编号使用方式作用
1列表.append(元素)向列表中追加一个元素
2列表.extend(容器)将数据容器的内容依次取出,追加到列表的尾部
3列表.insert(下标, 元素)在指定下标处,插入指定的元素
4del 列表[下标]删除列表指定下标元素
5列表.pop(下标)删除列表指定下标元素
6列表.remove(元素)从前向后,删除此元素第一个匹配项
7列表.clear()清空列表
8列表.count(元素)统计此元素在列表中出现的次数
9列表.index(元素)查找指定元素在列表的下标,找不到报错ValueError
10len(列表)统计容器内有多少元素

接下来就来一一演示这些方法:

def func04():
    my_list = ['hello', 'world', 'and', 'hello', 'Python']
    print(f'未加处理的列表:{my_list}')

    # 向列表中追加一个元素
    my_list.append('and')
    print(f'追加元素之后的列表:{my_list}')

    # 将数据容器的内容依次取出,追加到列表的尾部
    my_list02 = ['I', 'like', 'Python']
    my_list.extend(my_list02)
    print(f'讲一个容器内的元素全部取出放到另外一个容器内:{my_list}')

    # 在指定下标处,插入指定的元素
    my_list.insert(2, 'troublemaker')
    print(f'在指定位置插入指定元素:{my_list}')

    # 删除列表指定下标元素————方法一
    del my_list[2]
    print(f'删除指定位置元素之的列表:{my_list}')

    # 删除列表指定位置下标元素
    my_list.pop(3)
    print(f'删除列表指定位置元素之后的列表:{my_list}')

    # 从前向后,删除此元素的第一个匹配项
    my_list.remove('world')
    print(f'从前向后删除此元素的第一个匹配项后的列表为:{my_list}')

    # 统计此元素在列表中出现的次数
    count = my_list.count('and')
    print(f'元素 and 在列表中出现的次数为:{count}')

    # 查找指定元素在列表的下标
    index = my_list.index('like')
    print(f'找到指定元素,其下标为:{index}')

    # 统计容器内有多少元素
    my_len = len(my_list)
    print(f'容器内的元素个数为:{my_len}')

    # 清空列表
    my_list.clear()
    print(f'列表清空完毕,请检查:{my_list}')


if __name__ == '__main__':
    func04()

(七)遍历列表

def func05():
    my_list = [0, 1, 2, 3]
    for i in my_list:
        print(i)

    i = 0
    while i < len(my_list):
        print(i)
        i += 1

1、while循环和for循环的区别

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

  • 在循环控制上:
    • while循环可以自定循环条件,并自行控制
    • for循环不可以自定循环条件,只可以一个个从容器内取出数据
  • 在无限循环上:
    • while循环可以通过条件控制做到无限循环
    • for循环理论上不可以,因为北边里的容器容量不是无限的
  • 在使用场景上:
    • while循环适用于任何想要循环的场景
    • for循环适用于,便利数据容器的场景或简单的固定次数循环场景

2、练习案例

取出列表中的偶数:

定义一个列表,内容是:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

  • 遍历列表,取出列表内的偶数,并存入一个新的列表对象中
  • 使用while循环和for循环各操作一次

代码示例:

def func06():
    my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    my_new_list_for = list()

    # for循环
    for num_for in my_list:
        if num_for % 2 == 0:
            my_new_list_for.append(num_for)
    print(f'新的列表内元素为:{my_new_list_for}')

    # while循环
    my_new_list_while = []
    num_while = 1
    while num_while <= len(my_list):
        if num_while % 2 == 0:
            my_new_list_while.append(num_while)
        num_while += 1
    print(f'新的列表内的元素为:{my_new_list_while}')

三、总的来说

  • 数据容器就是一种可以容纳多分数据的数据容器,容纳的每一份数据称之为一个元素,每一个元素,可以是任意类型的数据。
  • 还有列表的一些个方法需要掌握

文章来源:https://blog.csdn.net/weixin_57154777/article/details/135222355
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。