04 Python 列表攻略:从基础操作到应用

文章目录

    • 前言
    • 创建列表
    • 列表的运算
      • `+` 运算符
      • `*`运算符
      • `in`和`not in`运算符
      • 索引运算
      • 切片运算 - 访问多个元素
        • 切片运算 - 负数访问
        • 切片运算 - 修改列表元素
      • 关系运算
    • 元素的遍历
      • 方法一
      • 方法二
    • 列表的方法
      • 添加元素
      • 删除元素
      • 查找和频次
      • 元素排序和反转

前言

列表是 python中最常用的容器类型之一,它是可变的,有序的,并且可以包含不同类型的元素。
使用[]字面量语法来定义列表,列表中的多个元素用逗号进行分隔

创建列表

# 创建列表
my_list = [1, 2, 3, 'apple', 'banana']

# 访问元素
print(my_list[0])  # 输出: 1

# 修改元素
my_list[1] = 10
print(my_list)  # 输出: [1, 10, 3, 'apple', 'banana']

# 添加元素
my_list.append('cherry')
print(my_list)  # 输出: [1, 10, 3, 'apple', 'banana', 'cherry']

# 删除元素
del my_list[2]
print(my_list)  # 输出: [1, 10, 'apple', 'banana', 'cherry']

此外还可以通过 python 内置函数list将其他序列变成列表

items1 = list(range(1, 10))
items2 = list('hello')
print(items1)  # [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(items2)  # ['h', 'e', 'l', 'l', 'o']

列表的运算

+ 运算符

+ 运算符可以实现对两个列表的拼接,会将两个列表中的元素连接起来放到一个列表中

items1 = [35, 12, 99, 45, 66]
items2 = [45, 58, 29]
items3 = ['Python', 'Java', 'JavaScript']
print(items1 + items2)  # [35, 12, 99, 45, 66, 45, 58, 29]
print(items2 + items3)  # [45, 58, 29, 'Python', 'Java', 'JavaScript']
items1 += items2
print(items1)  # [35, 12, 99, 45, 66, 45, 58, 29]

*运算符

*运算符实现列表的重复运算,*运算符会将列表元素重复指定的次数

# 借用上面的 + 运算符的列表
print(items2 * 3)  # [45, 58, 29, 45, 58, 29, 45, 58, 29]
print(items3 * 2)  # ['Python', 'Java', 'JavaScript', 'Python', 'Java', 'JavaScript']

innot in运算符

使用innot in运算符判断一个元素在不在列表中

print(29 in items2)  # True
print(99 in items2)  # False
print('C++' not in items3)     # True
print('Python' not in items3)  # False

索引运算

列表中有多个元素,而且元素是按照特定顺序放在列表中的,当想操作列表中的某个元素时,可以使用[]运算符,通过在[]中指定元素的位置来访问该元素,这种运算称为索引运算。需要说明的是,[]的元素位置可以是0N - 1的整数,也可以是-1-N的整数,分别称为正向索引和反向索引,其中N代表列表元素的个数。对于正向索引,[0]可以访问列表中的第一个元素,[N - 1]可以访问最后一个元素;对于反向索引,[-1]可以访问列表中的最后一个元素,[-N]可以访问第一个元素,代码如下所示。

items4 = ["apple","waxberry","pitaya","peach","watermelon"]
print(items4[0]) # apple
print(items4[2]) # pitaya
print(items4[4]) # watermelon
items4[2] = 'durian'
print(items4)      # ['apple', 'waxberry', 'durian', 'peach', 'watermelon']
print(items4[-5])  # 'apple'
print(items4[-4])  # 'waxberry'
print(items4[-1])  # watermelon
items4[-4] = 'strawberry'
print(items4)      # ['apple', 'strawberry', 'durian', 'peach', 'watermelon']

在使用索引运算的时候要避免出现索引越界的情况,对于上面的items4,如果我们访问items4[5]items4[-6],就会引发IndexError错误,导致程序崩溃,对应的错误信息是:list index out of range,翻译成中文就是“数组索引超出范围”。因为对于只有五个元素的列表items4,有效的正向索引是04,有效的反向索引是-1-5

切片运算 - 访问多个元素

如果要一次性访问列表中的多个元素,可以使用切片运算。切片运算是形如[start:end:stride]的运算符,其中start代表访问列表元素的起始位置,end代表访问列表元素的终止位置(终止位置的元素无法访问),而stride则代表了跨度,简单的说就是位置的增量,比如我们访问的第一个元素在start位置,那么第二个元素就在start + stride位置,当然start + stride要小于end。我们给上面的代码增加下面的语句,来使用切片运算符访问列表元素。

print(items4[1:3:1])     # ['strawberry', 'durian']
print(items4[0:3:1])     # ['apple', 'strawberry', 'durian']
print(items4[0:5:2])     # ['apple', 'durian', 'watermelon']
print(items4[-4:-2:1])   # ['strawberry', 'durian']
print(items4[-2:-6:-1])  # ['peach', 'durian', 'strawberry', 'apple']
切片运算 - 负数访问

如果 start 值等于0,那么使用切片运算时可以省略;如果end值等于N,N代表列表元素的个数,在使用切片运算可以省略;如果stride值等于1,那么在使用切片运算时也可以省略

print(items4[1:3])     # ['strawberry', 'durian']
print(items4[:3:1])    # ['apple', 'strawberry', 'durian']
print(items4[::2])     # ['apple', 'durian', 'watermelon']
print(items4[-4:-2])   # ['strawberry', 'durian']
print(items4[-2::-1])  # ['peach', 'durian', 'strawberry', 'apple']
切片运算 - 修改列表元素
items4[1:3] = ['x', 'o']
print(items4)  # ['apple', 'x', 'o', 'peach', 'watermelon']

关系运算

列表之间可以做关系运算,可以比较两个列表是否相等和比较大小

nums1 = [1,2,3,4]
nums2 = [list(range(1,5))]
nums3 = [3,2,1]
print(nums1 == nums2) # True
print(nums1 != nums2) # False
print(nums1 <= nums3) # True
print(nums2 >= nums3) # False

元素的遍历

在 python 中如果想要取出列表中的元素,可以使用for-in循环

方法一

在循环结构中通过索引运算,遍历列表元素

languages = ['Python', 'Java', 'C++', 'Kotlin']
for index in range(len(languages)):
    print(languages[index])

输出:

Python
Java
C++
Kotlin

上面使用len函数可以获取列表元素的个数N,而range(N)则相当于从0N-1的范围,刚好可以作为列表元素的索引

方法二

直接对列表做循环,循环变量就是列表元素

languages = ['Python', 'Java', 'C++', 'Kotlin']
for language in languages:
    print(language)

输出:

Python
Java
C++
Kotlin

列表的方法

列表是一种可变容器,可变容器是指可以对容器中的元素进行增删改查

添加元素

  • append:append 方法可以在列表最后添加元素
    • 语法:列表.append(要添加的元素)
  • insert:insert 方法可以在列表中指定位置插入新元素
    • 语法:列表.insert(插入的位置,要插入的元素)
  • extend:extend 方法可以将一个可迭代对象(列表,元组等)的元素添加到列表的末尾
    • 语法:列表1.extend(列表2)
languages = ['Python', 'Java', 'C++']
languages.append('JavaScript')
print(languages)  # ['Python', 'Java', 'C++', 'JavaScript']
languages.insert(1, 'SQL')
print(languages)  # ['Python', 'SQL', 'Java', 'C++', 'JavaScript']
languages2 = ["red","blue","yellow"]
languages.extend(languages2)
print(languages)  # ['Python', 'SQL', 'Java', 'C++', 'JavaScript','red','blue','yellow']

删除元素

  • remove:remove方法会移除列表中匹配的第一个元素,如果元素不在,会抛出ValueError异常
    • 语法:列表.remove(要移除的元素)
  • pop:用于移除并返回指定索引位置的元素。如果不指定索引,默认移除并返回最后一个元素
    • 语法:列表.pop(要删除的元素)
  • clear:用于清空列表中的所有元素。
    • 语法:列表.clear()
languages = ['Python', 'SQL', 'Java', 'C++', 'JavaScript']
if 'Java' in languages:
    languages.remove('Java')
if 'Swift' in languages:
    languages.remove('Swift')
print(languages)  # ['Python', 'SQL', C++', 'JavaScript']
languages.pop()
temp = languages.pop(1)
print(temp)       # SQL
languages.append(temp)
print(languages)  # ['Python', C++', 'SQL']
languages.clear()
print(languages)  # []

查找和频次

  • index:用于返回指定元素在列表中第一次出现的索引。如果元素不存在,会抛出 ValueError 异常。
    • 语法:索引 = 列表.index(要查找的元素)
  • count:用于统计指定元素在列表中出现的次数
    • 语法:出现的次数 = 列表.count(要统计的元素)
  • in:关键字可用于检查元素是否存在于列表中,它会返回一个布尔值
    • 语法:if 要检查的元素 in 列表
items = ['Python', 'Java', 'Java', 'C++', 'Kotlin', 'Python']
print(items.index('Python'))     # 0
# 从索引位置1开始查找'Python'
print(items.index('Python', 1))  # 5
print(items.count('Python'))     # 2
print(items.count('Kotlin'))     # 1
print(items.count('Swfit'))      # 0
# 从索引位置3开始查找'Java'
print(items.index('Java', 3))    # ValueError: 'Java' is not in list

if "C++" in items:
  print("C++"存在于列表中)
else:
  print("C++"不存在于列表中)

元素排序和反转

  • sort:用于对列表进行排序,默认是升序排序。可以通过 reverse=True 参数实现降序排序。
    • 语法:列表.sort(reverse=True)
  • reverse:用于反转列表中的元素顺序。
    • 语法:列表.reverse()
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
numbers.sort()
print(numbers)  # 输出: [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

numbers.sort(reverse=True)
print(numbers)  # 输出: [9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]


items = ['Python', 'Java', 'C++', 'Kotlin', 'Swift']
items.reverse()
print(items)  # ['Swift', 'Python', 'Kotlin', 'Java', 'C++']

你可能感兴趣的:(Python,python,windows,开发语言)