列表元组的操作

目录

  1. 列表与元组的功能函数
  2. 索引的应用
  3. 切片的应用
  4. 索引与切片之字符串

列表与元组的功能函数

1. len

  • len 函数可以计算出 除了数字类型以外, 其他所有的数据类型的长度
names = ["Peter", "Mary", "John"]
print(len(names)) # 输出 3

2. 列表(元组)之间的累加与乘法

names = ["Peter", "Mary"]
new_names = names + names
print(new_names) # 输出 ["Peter", "Mary", "Peter", "Mary"]
names = ["Peter", "Mary"]
new_names = names * 2
print(new_names) # 输出 ["Peter", "Mary", "Peter", "Mary"]

3. in 与 not in

  • in 是用来判断某个元素是否在该数据结构中
  • not in 则相反
names = ["Peter", "John"]
print("John" in names) # 输出 True
print("Mary" not in names) # 输出 True

4. append

  • 将一个元素添加到当前列表当中
  • 被添加的元素指挥添加到末尾
  • append 函数是在原有列表的基础上面添加,不需要额外添加新的变量
  • 传入:要添加的元素
names = ["Peter"]
names.append("Mary")
print(names) # 输出 ["Peter", "Mary"]

5. insert

  • 将一个元素添加到当前列表的指定位置
  • append只能添加到末尾,insert能选择位置
  • 如果 insert 传入的位置列表中不存在,则将新元素添加到末尾
  • 字符串,元组,列表的位置都是从0开始计算的
  • 传入:指定的位置,加入的元素
names = ["Peter", "Mary"]
names.insert(1, "John")
print(names) # 输出 ["Peter", "John", "Mary"]

6. count

  • 返回当前列表(元组)中元素的个数
  • 如果元素不存在就返回 0
  • 列表指挥检查完整的元素是否存在需要计算的内容
  • 传入:计算的元素
names = ["Peter", "Mary", "John"]
print(names.count("Peter")) # 输出 1
print(names.count("Pet")) # 输出 0

7. remove

  • 删除列表的某个元素
  • 如果要删除的元素不存在,会直接报错
  • 如果要删除的元素有多个,只会删除第一个
  • remove 函数不会返回一个新的列表,而是在原先的列表中对元素进行删除
  • 传入:要删除的元素
names = ["Peter", "Mary", "John", "Peter"]
names.remove("Peter")
print(names) # 输出 ["Mary", "John", "Peter"]

8. reverse

  • 对当前列表顺序进行反转
names = ["Peter", "Mary", "John"]
names.reverse()
print(names) # 输出 ["John", "Mary", "Peter"]

9. sort

  • 对当前的列表按照一定规律进行排序
  • 使用 sort 时,列表中的元素类型必须相同,否则无法排序(报错)
  • 传入:key = 参数比较,reverse = False(True 降序, False 升序)
names = ["Peter", "John", "Mary"]
names.sort()
print(names) # 输出 ['John', 'Mary', 'Peter'],这里时按照首字母排序
names.sort(reverse=True)
print(names) # 输出 ['Peter', 'Mary', 'John']

10. clear

  • 将当前列表中的数据清空
names = ["Peter", "Mary"]
names.clear()
print(names) # 输出 []

11. copy

  • 将当前的列表复制一份,新列表与旧列表内容相同,内存地址不同
  • 二次赋值的变量与原始变量在同一个内存地址,copy创建的新列表与原始列表在不同的内存地址
  • copy属于浅拷贝,其列表元素共享变化
names = [['Peter', 'Mary'], ['John']]
new_names = names.copy()
print(new_names) # 输出 [['Peter', 'Mary'], ['John']]
print(id(names) == id(new_names)) # 输出 False
new_names[0].append("John")
print(new_names) # 输出 [['Peter', 'Mary', 'John'], ['John']]
print(names) # 输出 [['Peter', 'Mary', 'John'], ['John']]

12. extend

  • 将其他列表或元组中的元素导入到当前列表当中
  • 传入:导入的列表或元组
names = ["Peter"]
more_names = ["Mary", "John"]
names.extend(more_names)
print(names) # 输出 ['Peter', 'Mary', 'John']

13. index

  • 返回一个元素的索引
  • 传入:查找的元素
names = ["Peter", "John", "Mary"]
print(names.index("Mary")) # 输出 2

14. pop

  • 通过索引删除并获取列表的元素
  • 传入:索引
names = ["Peter", "John", "Mary"]
print(names.pop(2)) # 输出 Mary
print(names) # 输出 ["Peter", "John"]

15. del

  • 直接删除,无返回
  • 如果index 不存在直接报错
names = ["Peter", "Mary", "John"]
del names[1]
print(names) # 输出 ["Peter", "John"]

2. 索引的应用

什么是索引

  • 字符串,列表和与元组从最左边记录的位置就是索引
  • 索引使用数字表示,其实从0开始

列表的索引,获取与修改

  • list[index] = new_item
  • 数据的修改只能在存在的索引范围内
  • 列表无法通过添加新的索引的方式赋值

3. 切片的应用

什么是切片

  • 索引用来对单个元素进行访问,切片则对一定范围内的元素进行访问
  • 切片通过冒号在括号内把两个索引之间的数值查找出来
  • 切片规则为:左含,右不含
numbers = [1,2,3,4,5,6,7,8,9,10]
print(numbers[3:8]) # 输出 [4,5,6,7,8]

索引切片在元组中的特殊性

  • 可以和列表一样获取索引与切片索引
  • 元组函数index和列表用法完全一致
  • 无法通过索引修改与删除元素

4. 索引与切片之字符串

字符串的索引与获取

  • 索引规则与列表相同
  • 切片和索引的获取与列表相同
  • 无法通过索引修改或删除
  • 字符串不可修改
name = "XiaoYu"
print(name[0]) # 输出 X
print(name[1:5]) # 输出 iaoY