欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python3数据类型之列表(List)类型

程序员文章站 2022-06-14 21:09:58
...

1. 定义

1.1 简介

  • 专门用于存储 一串数据,存储的数据成为元素

1.2 格式

list 用[]定义,元素之间使用,分割

1.3 特点

元素可以为不同类型

  • 索引(index)就是元素在list中的位置编号

list的index从0开始

Python3数据类型之列表(List)类型

"""
列表定义的格式:
列表变量的名字 = [元素1, 元素2, ……]

使用格式:
    列表变量[位置]
    位置:也叫下标、索引
"""

# 列表定义
name_list = ['mike', 'yoyo', 'rock', 'lily']
#              0       1        2       3
#             -4       -3      -2       -1

# 最后一个元素取出来
print(name_list[3])
print(name_list[-1])

# 访问列表元素,不要超出范围,不要越界
# IndexError: list index out of range
# print(name_list[4])
  • 注意:从list中取值时,如果超出索引范围,程序会报错

1.4 地位

  • list是Python中使用最频繁的数据类型

2. 分类

  • 里边元素时int型,为整型列表
  • 里边元素为float型,为浮点型列表
  • 里边元素为complex型,为复数型列表
  • 里边元素时两种或三种都有的,为复合兴列表

3. 操作

3.1 基本运算

  • 增加
    • 格式:list.append(value)
    • 说明:在list末尾追加数据
  • 删除
    • 格式1:list.remove(value)
    • 说明:删除第一个出现的指定数据
    • 格式2:list.pop(index)
    • 说明:返回对应的值
  • 修改
    • 格式:list[index]=value
    • 说明:修改指定index的数据,index不存在会报错
  • 查询
    • 查询元素是否存在:
      • list[index]
      • if value in list:
        Python3数据类型之列表(List)类型

3.2 函数运算

  • 查询list的长度:len(list)
  • 查询list最大元素:max(list)
  • 查询list最小元素:min(list)
  • 逆置list:list.reverse()
  • 清空list:list.clear()

3.3 常用操作

  • 排序
    • 格式:list.sort()
    • 说明:升序排序

3.4 range

1. 定义

  • range()方法/函数可创建一个整数列表对象,一般用于fro循环中

2. 使用

range(开始位置,结束位置,步长)

  • 和切片用法差不多
# 1. 打印:0、1、2、3、4
# for i in range(5):  # [0, 5)
for i in range(0, 5):  # [0, 5)
    print(i)

# 2. 1~100的累加
# 2.1 定义辅助变量
_sum = 0

# 2.2 for 控制循环范围
for i in range(1, 101):
    # 2.3 累加
    _sum += i

# 2.4 在循环外面打印累加结果
print(_sum)

# 3. 验证步长,打印:0、2、4
for i in range(0, 5, 2):  # [0, 5)
    print(i)

3.5 列表推导式

1. 定义

  • 快速生成列表的表达形式,通过for添加元素的简介写法
  • 格式:[计算公式 for 循环 if 判断]
  • 特点
    • 每循环一次,将计算公式的结果添加到列表中
    • 计算公式可以使用遍历出的数据
    • for遍历出的数据必须满足if判断才会使用计算机公式生成元素
# 普通方法:遍历0~4范围的元素,这些元素添加到列表中
# 1. 空列表
new_list = []

# 2. range(5)遍历取数
for i in range(5):
    # 2.1 取出来的元素追加到列表
    new_list.append(i)

# 3. 循环外面,打印结果
print(new_list)

print('='*30)

# 通过列表推导式,实现上面的效果 [计算公式 for循环体]
# 1. for i in range(5), 取出0,放在i变量中,i追加到列表
# 2. 循环下一步,取出2,放在i变量中,i追加到列表
# 重复,直到退出循环
new_list2 = [i for i in range(5)]
print(new_list2)

print('='*30)


# 0~10之间数,偶数才添加到列表
# 普通方法实现
# 1. 空列表
new_list = []

# 2. range(11)遍历取数
for i in range(11):
    # 2.1 取出来的元素是偶数的话,追加到列表
    # 2.2 i % 2 == 0, i 对 2求余,结果为0,就是偶数
    if i % 2 == 0:
        new_list.append(i)

# 3. 循环外面,打印结果
print(new_list)

print('='*30)

# 列表推导式实现
# [i for i in range(11) if i % 2 == 0]
# 1. for i in range(11)取第一个元素
# 2. if i % 2 == 0
# 3. 上面满足条件的i, 条件到列表
new_list2 = [i for i in range(11) if i % 2 == 0]
print(new_list2)

运行结果

[0, 1, 2, 3, 4]
==============================
[0, 1, 2, 3, 4]
==============================
[0, 2, 4, 6, 8, 10]
==============================
[0, 2, 4, 6, 8, 10]
  • 能够使用列表推导使创建1-100之间元素的列表
# 通过列表推导式,实现上面的效果 [计算公式 for循环体]
# 1. for i in range(1, 101), 取出1,放在i变量中,i追加到列表
# 2. 循环下一步,取出2,放在i变量中,i追加到列表
# 重复,直到退出循环
new_list = [i for i in range(1, 101)]
print(new_list)

3. 嵌套

3.1 定义

  • 一个list中的元素优势list,name这就是列表的嵌套
school_list = [['北京大学', '清华大学'], ['中山大学', '华南理工大学'], ['哈工大', '哈工程']]
#                  0                      1                         2

# 取出第 2 个元素,也就是索引为1的元素
print(school_list[1])  # ['中山大学', '华南理工大学']

# 先取出索引为1的元素,再继续索引为1的元素
# ['中山大学', '华南理工大学']
#   0            1
print(school_list[1][1])  # '华南理工大学'

4. 迭代

4.1 定义

迭代也叫遍历,遍历循环

  • 遍历就是 从头到尾 依次 从列表中取出每一个元素

4.2 操作

1. for遍历

  • Python中专门提供 for循环 实现遍历
    Python3数据类型之列表(List)类型
# 遍历,从头开始找,直到结束
name_list = ['mike', 'yoyo', 'rock', 'lily']

# 通过while实现遍历
# 1. 定义条件变量i = 0
i = 0

# 2. while i < 列表元素个数:
while i < len(name_list):
    # 3. 取出某个元素,打印
    name = name_list[i]
    print(name)

    # 4. 条件变量的修改
    i += 1

print('==========华丽分割线=============')

# for遍历循环,和上面的while效果等价
# 从头到尾 依次从 列表 中取出 每一个元素
for name in name_list:
    print(name)

2. for index in range(len(list))

Python3数据类型之列表(List)类型

2. if…in 和 for…in 的区别

  • if…in:判断某个元素是否在列表中,如果在,if的条件为True
  • for…in:从头到尾 依次从列表 中取出每一个元素
name_list = ['mike', 'yoyo', 'rock', 'lily']

# if…in:判断某个元素是否在列表中,如果在,if的条件为True
name = 'yoyo'

# name的内容'yoyo'是否在name_list列表中,如果在,name in name_list结果为True
if name in name_list:
    print('%s 在列表中' % name)

print('==========华丽分割线=============')

# for…in:从头到尾 依次从 列表 中取出 每一个元素,这个元素给name赋值
for name in name_list:
    print(name)

运行结果:

yoyo 在列表中
==========华丽分割线=============
mike
yoyo
rock
lily

4.3 for…else的使用

  • for循环里面没有遇到break语句,for执行完后,则会执行else的分支
name_list = ['mike', 'yoyo', 'rock', 'lily']

for name in name_list:
    print(name)

    # 测试有break,和没有break的else执行情况
    # if name == 'yoyo':
    #     break
else:
    print('for循环里面没有遇到break语句,for执行完后,则会执行else的分支')

运行结果:

mike
yoyo
rock
lily
for循环里面没有遇到break语句,for执行完后,则会执行else的分支

5. 总结

5.1 定义列表的基本格式

"""
列表定义的格式:
列表变量的名字 = [元素1, 元素2, ……]

使用格式:
    列表变量[位置]
    位置:也叫下标、索引
"""

name_list = ['mike', 'yoyo', 'rock', 'lily']
#              0       1        2       3
#             -4       -3      -2       -1
print(name_list[3])

5.2 常用操作

  • 增加:list.append(value)
  • 删除:list.remove(value)/list.pop(index)
  • 修改:list[index]=value
  • 查询
    • list[index]
    • len(list)
    • if value in list:

5.3 for循环遍历列表

name_list = ['mike', 'yoyo', 'rock', 'lily']
# 从头到尾 依次从 列表 中取出 每一个元素,这个元素给name赋值
for name in name_list:
    print(name)