Python基本数据类型之列表

本文详细介绍了Python列表的性质,包括其可变性、有序性及允许重复元素的特点。列举了列表的基本操作,如创建、拼接、重复、成员运算和比较运算,并探讨了列表作为可迭代对象的遍历方式。此外,文章还涉及了列表的切片、相关方法、推导式等高级特性,是Python初学者深入理解列表的宝贵资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

变量类型之列表

一、列表的性质

  1. 列表,容器符号:[ ], 数据类型:list。
  2. 列表是可变的(可以进行增删改等操作)。
  3. 列表中允许出现重复的元素。
  4. 列表是有序的数据类型。
  5. 列表中可以保存任意类型的数据,它支持字符,数字,字符串甚至可以包含列表(所谓嵌套)。

二、列表的基本操作

1. 列表能实现创建空列表、拼接、重复、成员运算,比较运算等基本操作。
  • a) 创建空列表,通过构造器语法,交换列表元素值

    # 创建空列表
    list1 = []
    list2 = list(list1)
    print(list1, list2, list1 == list2)
    # [] []  True
    
  • b) 列表的拼接(生成一个新的列表)

    list3 = [1, 1.1, True, 'wnm',[520],	None, (1, 2, 3), {1, 2, 3}, {'name': 20}]
    print(list3 + list3)
    # 输出结果:
    [1, 1.1, True, 'wnm', [520], None, (1, 2, 3), {1, 2, 3}, {'name': 20},1, 1.1, True, 'wnm', [520], None, (1, 2, 3), {1, 2, 3}, {'name': 20}]
    
  • c) 列表的重复(生成一个新的列表)

    list3 = [1, 1.1, True, 'wnm',[520],	None, (1, 2, 3), {1, 2, 3}, {'name': 20}]
    print(list3 * 5)
    # 元素依次序重复五次放置新列表中。
    
  • d) 列表的成员运算(判断元素在不在列表中)

    • 使用in、not in 来判断。
    • 成员运算的返回结果一般是布尔值类型:True or False。
    # 对象继续使用列表list3
    print('wr' in list3 )
    print('bcda' not in list3)
    print(1 in list3)
    print([1] in list3)
    # 输出的结果分别为:
    False
    True
    True
    False
    
  • e) 列表的比较运算

    • 列表之间是可以比较大小的。
    • 列表比较大小的是相同位置第一对相同数据类型不同子元素的大小。
        # 定义两个非空列表,比较大小
        list4 = [1, 2, 3, 4]        
        list5 = [1, 2, 4, 5]        
        print(list4 > list5)  
        # False
                                    
        list6 = [1, 2, 3, 4]        
        list7 = [1, 2, 4, 3]        
        print(list6 == list7)  
        # False    列表是有序的,元素排列有顺序。
    
2. 列表是一种容器,也是一种可迭代对象,即可以进行遍历。列表的遍历又可以划分为以下三种:
  • a) 直接遍历:for 变量 in 列表:

    list1 = ['A', 'B', 'C', 'D', 'C']
    for i in list1:
        print(i)
    # 打印结果为:
    	A B C D C
    
  • b) 间接遍历:可以通过列表的下标来实现间接遍历:

    • 引入len()方法,获取有序容器的长度。
    list1 = ['A', 'B', 'C', 'D', 'C']
    print(len(list1))
    # 5
    
    for i in range(len(list1)):
    	print(f'{i}-->{list1[i]}')
    

    以上表达式的输出结果为:

    0–>A
    1–>B
    2–>C
    3–>D
    4–>C


  • c) enumerate()元组遍历

    • 能够将列表中的每个元素及其下标放到一个元组中,多个元组组成一个可迭代对象。
    list1 = ['A', 'B', 'C', 'D', 'C']
    print(enumerate(list1))
    for content in enumerate(list1):
        print(content)
    

    以上表达式的输出结果为:

    <enumerate object at 0x0000016444A8EEC0> 枚举对象
    (0, ‘A’)
    (1, ‘B’)
    (2, ‘C’)
    (3, ‘D’)
    (4, ‘C’)


3.列表的切片操作
  • 列表一种有序的数据类型,可以根据它的下标来获取其中元素,也可以通过切片操作对列表元素进行重新划分,获取想要的列表。
    • 列表的下标又可以分成 正向下标负向下标 两种,一种是从左到右,从0开始计数,另一种是从右向左计数,起始下标为 -1。

    • 切片操作不改变原容器数据类型。

    • 切片操作[M:N:step] 为左闭右开区间 [M,N),step表示步长。

      list1 = ['英雄联盟', 'CS:GO', '超级马里奥', '原神', '魂斗罗', '王者荣耀', 'PUBG']
      # 下标取元素语法:有序容器[下标对应数字]
      print(list1[2] == list1[-5])
      print(list[2])
      
      print(list1[0:7])
      print(list1[0:7:3])
      print(list1[1:-2:3])
      print(list1[-1:-8:-1])
      # 开始和下标都不写,表示元素从头取到尾。
      print(list1[:])
      # 表示元素从尾取到头
      print(list1[::-1])
      # 表示元素从尾按步长为3来向头取元素
      print(list1[::-3])
      

      以上表达式的打印结果为:


      True
      超级马里奥

      [‘英雄联盟’, ‘CS:GO’, ‘超级马里奥’, ‘原神’, ‘魂斗罗’, ‘王者荣耀’, ‘PUBG’]
      [‘英雄联盟’, ‘原神’, ‘PUBG’]
      [‘CS:GO’, ‘魂斗罗’]
      [‘PUBG’, ‘王者荣耀’, ‘魂斗罗’, ‘原神’, ‘超级马里奥’, ‘CS:GO’, ‘英雄联盟’]
      [‘英雄联盟’, ‘CS:GO’, ‘超级马里奥’, ‘原神’, ‘魂斗罗’, ‘王者荣耀’, ‘PUBG’]
      [‘PUBG’, ‘王者荣耀’, ‘魂斗罗’, ‘原神’, ‘超级马里奥’, ‘CS:GO’, ‘英雄联盟’]
      [‘PUBG’, ‘原神’, ‘英雄联盟’]


4. 列表的相关方法
  • 列表有:查找、值的统计、增删改、排序、统计次数等多种方法,下边详细介绍。
    a:查找index()
    b:增加append、insert、extend
    c:修改list1[i] = ‘value’
    d:删除del、reove、pop、clear(清空列表)
    e:数值统计sum(求和)、max(最大值)、min(最小值)
    f:统计次数count(统计列表中某个元素出现的次数)
    g:排序方法reverse(对列表元素进行倒序排序),sort、sorted(对列表元素进行排序,默认升序排序)
# 查找列表元素:index
'''
index 方法默认从左向右查找,找到元素立即停止查找并返回下标。
可以指定index开始查找元素的位置,找不到会报错
'''
list1 = ['Java', 'Python', 'Java']
result = list1.index('Java')
print(result)
result1 = list1.index('Java', 1)
print(result1)
# 输出下标分别为: 0  2

# 增加
# append:追加,向列表的末尾添加元素
list1.append('HTML')
print(list1)
# ['Java', 'Python', 'Java','HTML']

# insert:插入,向列表的任意位置添加元素
list1.insert(0, 'C++'')
print(list1)
# ['C++','Java', 'Python', 'Java','HTML']
             
# extend:追加,从一个容器中将所有元素添加到列表中
list1.extend('123')
list1.extend(['Golong', 'ui'])
print(list1)
# ['C++', 'Java', 'Python', 'C', 'HTML', '1', '2', '3', 'Golong', 'ui']
             
# 改
# 语法:  有序容器[下标] = 值
list1[5] = 'Java'
print(list1)
# ['C++', 'Java', 'Python', 'C', 'HTML', 'Java', '2', '3', 'Golong', 'ui']
             
# 删
# del:del 有序容器[下标]
# del是根据容器元素下标来删除元素的
del list1[6]
print(list1)
# ['C++', 'Java', 'Python', 'C', 'HTML', 'Java', '3', 'Golong', 'ui']             
             
# remove:根据元素删除,从左向右删除,如果某个元素重复,一次只删除一个
list1.remove('3')
print(list1)
# ['C++', 'Java', 'Python', 'C', 'HTML', 'Java', 'Golong', 'ui']
             
# pop:如果不给pop指定元素,删除的是列表中最后一个元素;或者给pop指定下标删除元素
# pop方法可以告诉你删除的是那个元素
list1.pop()
print(list1)             
#  ['C++', 'Java', 'Python', 'C', 'HTML', 'Java', 'Golong']            
             
# clear(清空列表)
list1.clear()
print(list1)
# []
             
# 数值统计
# sum:对列表中元素求和
# max:求列表中元素的最大值
# min:求列表中元素的最小值
# 这几种方法只适用于操作对象全是数字列表(列表中元素全是数字)
num_list = [1, 2, 3, 4, 5]
print(sum(num_list))
print(max(num_list))
print(min(num_list))
# 15  5   1        
             
# 统计次数
# count:统计某个元素出现的次数
list3 = [2, 5, 1, 7, 02]
print(list3.count(2))
print(list3.count(9))     
# 2   0
             
# 排序方法
# reverse:将列表倒序,直接对列表本身修改
num_list = [1, 2, 3, 4, 5]
num_list.reverse()
print(num_list)
# [5, 4, 3, 2, 1]
             
# sort: 默认升序排序,修改列表本身。如果reverse=True,则变为降序排序。
list2 = [2, 5, 1, 7, 0]
list2.sort()
list2.sort(reverse=True)
print(list2)
# [7, 5, 2, 1, 0]
             
# sorted:默认升序排序,如果reverse=True,降序排序
list3 = [2, 5, 1, 7, 0]
print(sorted(list3), list3)
print(sorted(list3, reverse=True), list3)
# [0, 1, 2, 5, 7]
  [7, 5, 2, 1, 0]
5.列表的推导式
  • 列表推导式又称列表生成式,有三种语法表达形式:

    • 语法一、[表达式 for 变量 in 容器]
    • 语法二、[符合条件的表达式 for 变量 in 容器 if 条件]
    • 语法三、[表达式 for 变量1 in 容器1 for 变量2 in 容器2]
    • 这三种语法最后生成的都是列表
  • 三种语法表达形式的用法:

    # 语法一实现将100以内5的倍数添加到列表中
    list1 = [i for i in range(0, 101, 5)]
    print(list1)
    
    # 用语法二来实现
    list4 = [i for i in range(101) if i % 5 == 0]
    print(list4)
    
    # 使用语法三随机生成5个人的三科成绩
    import random
    
    score = [ [random.randint(0, 100) for _ in range(3)]  for _ in range(5)]
    print(score)
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

stiinput

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

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

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

打赏作者

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

抵扣说明:

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

余额充值