美文网首页
Python入门之路-常用语法2 列表、元组

Python入门之路-常用语法2 列表、元组

作者: percivals | 来源:发表于2022-12-16 16:07 被阅读0次

列表

1.列表

格式为[a,b,c,d],可以存放不同类型的数据
访问指定元素以arr[index]格式, 如果想要访问最后一位元素,可以通过

list1[len(list1)-1]

也可以通过

list1[-1]

同理倒数第二个是list1[-2]

2.列表切片

通过list[startIndex:endIndex]语法,可以获取指定范围的列表切片,不包括结束点位:

list1[1:3]

如果从起始点位开始或者结束点位结束,可以省略对应的下标:

list1[:3]

list1[3:]

list1[:]

注意,冒号不能省略

此外,还可以设置列表跨度步进值:

list1[1:6:2]

代表从第一个元素开始,获取下一个元素的跨度为2,到第六个元素结束,即1,3,5

由此,可以使用list1[::-1]来获取数组的倒序

3.列表新增元素
  • 使用append函数,添加单个元素到末尾

    list1.append("第六个元素")
    
  • 使用extend函数,添加多个元素到末尾
    extend函数可以添加一个可迭代对象

    list1.extend([7,8])
    

    以上写法也可以用切片来完成

    list1[len(list1):] = [7,8]
    

    与上面的extend写法是等价的关系

  • 使用insert函数,插入单个元素到指定下标位置

list1.insert(1,"插入的元素内容")

4.列表删除元素

  • remove函数
    可以移除指定元素
    如果包含多个相同的元素,只会删除第一个
    如果列表中并不存在该元素,会报错
list1.removeat("需要删除的元素内容")
  • pop函数
    可以移除指定下标位置的元素,并返回该元素
i = list1.pop(2)
  • clear函数,用于清空列表
list1.clear()

5.列表修改元素

  • 通过指定下标可以修改元素
    注意,不可以越界,超出数组本身长度会报错
list1[0] = "修改之后的元素"
  • 通过切片方式也可以完成元素的替换,并且可以替换多个元素
list1[1:] = ["元素2","元素3"]

替换元素的长度与切片长度可以不相等,列表长度会随之发生改变

6.列表查找元素

  • count函数,用于查找元素在列表中出现的次数
list1.count("指定元素内容")
  • index函数,查找某个元素在列表中的索引值
    如果有多个相同的元素,只会返回第一个的下标值
list1.index("查找的元素内容")

index函数有两个额外的参数值,index(x, start, end), 可以传入查找的起始位置

list1.index("查找的元素内容",10,20)

7.列表复制

  • copy
    使用copy函数可以复制一份相同的列表
list2 = list1.copy()

使用copy时,会对列表进行浅拷贝,列表具有不同的地址,列表内的元素仍然是地址拷贝

list1 = [1,2,3]
list2 = list1.copy()
list2[0] = 3
list1  // [1, 2, 3]
list2  // [3, 2, 3]

当对copy出来的列表list2进行修改赋值,list1保持原来的值
但是如果对list2列表内的元素进行修改赋值,list1内的元素也对应修改

list1 = [[0,1,2],[1,2,3],[2,3,4]]
list2 = list1.copy()
list2[0][0] = 3
list2  // [[3, 1, 2], [1, 2, 3], [2, 3, 4]]
list1  // [[3, 1, 2], [1, 2, 3], [2, 3, 4]]

因为copy浅拷贝是对列表外层对象进行拷贝,如果包含嵌套对象,只会拷贝其引用

使用深拷贝可以解决这个问题
深拷贝,需要先引入copy模块

import copy
copy.copy(list1)  // 浅拷贝
copy.deepcopy(list1)  // 深拷贝

深拷贝会对对象及对象内的子元素进行拷贝

  • 使用切片进行实现
list3 = list2[:]

效果与上述的一致

8.列表拼接

可以使用+、*等运算符对列表进行拼接

list1 = [1,2,3]
list2 = [4,5,6]
list3 = list1+list2  // [1,2,3,4,5,6]
list4 = list1 * 3 // [1,2,3,1,2,3,1,2,3]

通过*进行的拷贝是地址拷贝,此时修改一个列表,另外的列表也会发生修改

9.列表推导式

使用语法糖对列表进行处理以生成一个新的列表,效率较高

格式:[表达式 +  for循环语句]

如:[i * 2 for i in list1]

list1 = [i * 2 for i in range(3)] // [0, 2, 4]

列表推导式后面可以添加一个筛选句

格式:[表达式 +  for循环语句 + 筛选语句]

如:
[ i * 2 for i in range(3) if i < 2]  // [0, 2]

列表推导式中,循环语句使用嵌套写法

格式: [表达式 + for循环语句1 + for 循环语句2 + ... + for循环语句n]
如:
list1 = [[0,1,2],[1,2,3],[2,3,4]]
[i for firstRow in list1 for i in firstRow] // [0, 1, 2, 1, 2, 3, 2, 3, 4]

同理,每个for语句后面都可以添加一个筛选语句

格式: [表达式 + for循环语句1  + 筛选语句1 + for 循环语句2 + 筛选语句2 + ... + for循环语句n + 筛选语句n]

10.其他函数

  • 排序 sort函数、reverse函数
    通过sort函数可以实现列表的排序,reverse函数实现倒序

元组

格式为 (a, b, c, d, e), 其中()可以去掉,即a, b, c, d, e。像列表一样可以容纳多个不同类型的对象,

元组数据是不可变的(但是如果元组内存放的是可变类型,比如列表,该数据是可以修改的)

  • 取值
    可以通过下标进行取值, 但是元组数据不可变,无法通过下标来修改值
tuple1 = (1,2,3,4,5)
tuple1[0] // 1

也可以像列表一样通过切片来取值

tuple1[1:3]  // (2, 3)

还可以通过赋值方式来进行取值

tuple1 = (1,2,3)
(x, y, z) = tuple1
x // 1
y // 2
z // 3

注意这种方式需要赋值的数量跟对应元组的长度一致

  • count函数、index函数、+、*
    同列表的用法一致

  • 嵌套
    元组内可以嵌套元组

(tuple1,tuple1) // ((1, 2, 3, 4, 5), (1, 2, 3, 4, 5))
  • 列表推导式
    元组也支持列表推导式语法
[i + 1 for i in tuple1] // [2,3,4,5,6]

会生成一个列表

相关文章

网友评论

      本文标题:Python入门之路-常用语法2 列表、元组

      本文链接:https://www.haomeiwen.com/subject/kvfmfdtx.html