当前位置: 首页 > article >正文

第二章Python序列-列表

列表:

1.创建列表

(1)直接将一个列表对象赋给变量

>>> a=[1,2,3,4,5]
>>> a
[1, 2, 3, 4, 5]
>>> a_list=['a','b','mpilgrim','z','example']
>>> a_list
['a', 'b', 'mpilgrim', 'z', 'example']
>>> a_list=[]  #创建空列表
>>> a_list
[]
>>> 

(2)用list()将其他类型转化为列表

>>> a=list(range(1,10))  #范围是左闭右开的
>>> a
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a=list(range(10))#省略1,从0开始
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a=list(range(1,10,2))#从1开始的奇数
>>> a
[1, 3, 5, 7, 9]

2.访问和修改

双向索引

(1)访问:通过索引

>>> a
[1, 3, 5, 7, 9]
>>> a[0]
1
>>> a[-5]
1

(2)通过for语句

>>> a
[1, 3, 5, 7, 9]
>>> for data in a:
    print(data)

    
1
3
5
7
9

修改

3.列表元素的增加

(1)运算符 +(合并列表,生成一个新列表) +=(合并列表,原地操作) * (列表元素重复)

>>> x=[1,2,3,4,5,6]
>>> y=[4,7,8,5,6,9]
>>> id(x)#x地址
2439429513472
>>> id(y)#y地址
2439429650496
>>> z=x+y#合并列表
>>> z
[1, 2, 3, 4, 5, 6, 4, 7, 8, 5, 6, 9]
>>> type(z)#z的类型
<class 'list'>
>>> id(z)
2439426517760
>>> x=x+y
>>> x
[1, 2, 3, 4, 5, 6, 4, 7, 8, 5, 6, 9]
>>> id(x)
2439397895424
>>> x=[1,2,3,4,5,6]
>>> id(x)
2439429513472
>>> x+=y
>>> x
[1, 2, 3, 4, 5, 6, 4, 7, 8, 5, 6, 9]
>>> id(x)
2439429513472
>>> y
[4, 7, 8, 5, 6, 9]
>>> y*3
[4, 7, 8, 5, 6, 9, 4, 7, 8, 5, 6, 9, 4, 7, 8, 5, 6, 9]
>>> y   #y不变
[4, 7, 8, 5, 6, 9]

(2)append()方法

语法:append(object)

>>> y
[4, 7, 8, 5, 6, 9]
>>> y.append(0)   #原地修改列表,速度快,是真正意义上的在列表尾部添加元素,也是最推荐的方法
>>> y
[4, 7, 8, 5, 6, 9, 0]

(3)指定位置添加 insert()

语法:insert(index,object)

>>> y
[4, 7, 8, 5, 6, 9, 0]
>>> y.insert(3,1)   #在下标为3的位置上插入元素6,该位置之后的元素向后移动
>>> y
[4, 7, 8, 1, 5, 6, 9, 0]

(4)extend()可以将另一个可迭代对象的所有元素添加至该列表对象尾部

entend()方法来增加列表与元素也不会改变列表的内存首地址,属于原地操作、

>>> a
[1, 3, 5, 7, 9]
>>> id(a)
2439429649024
>>> a.extend([7,8,9])
>>> a
[1, 3, 5, 7, 9, 7, 8, 9]
>>> id(a)
2439429649024

4.列表元素的删除

(1) del命令

使用del命令删除列表中指定位置上的元素,后面的元素自动向前移动

>>> a
[1, 3, 5, 7, 9, 7, 8, 9]
>>> del a[1]
>>> a
[1, 5, 7, 9, 7, 8, 9]

(2) remove() 删除首次出现的指定元素

>>> a
[1, 5, 7, 9, 7, 8, 9]
>>> a.remove(7)  #删除第一个7
>>> a
[1, 5, 9, 7, 8, 9]
循环+remove()
>>> x=[1,2,1,2,1,2,1,2,1]
>>> for i in x:
    if i==1:
        x.remove(i)

        
>>> x
[2, 2, 2, 2]

(3) pop()方法 pop([index])

删除并返回指定(默认为最后一个)位置上的元素,如果给定的索引超出列表的范围,则抛出异常

>>> a
[1, 5, 9, 7, 8, 9]
>>> a.pop()  #默认删除最后一个
9
>>> a
[1, 5, 9, 7, 8]
>>> a.pop(1)  #删除下标为1的值
5
>>> a
[1, 9, 7, 8]

(4) clear()方法:删除列表对象中所有元素

>>> a=[1,2]
>>> a.clear
>>> y
    []

5.查找、 计数、成员判定

(1)查找:index()

>>> a
[1, 2, 3, 1, 6, 5, 1, 4, 5, 1, 2, 6]
>>> a.index(2)   #首次出现的缩引
1
>>> a.index(6)
4

(2)计数: count()\

>>> a
[1, 2, 3, 1, 6, 5, 1, 4, 5, 1, 2, 6]
>>> a.count(1)
4
>>> a.count(0)
0

(3)成员判定 in not in

>>> a
[1, 2, 3, 1, 6, 5, 1, 4, 5, 1, 2, 6]
>>> 1 not in a
False
>>> 0 not in a
True

6.切片操作

切片操作是python中有序序列的重要操作之一,适用于列表,元组,字符串,range对象等类型。

语法:[start:stop:stop]

第一个数字表示切片的开始位置(默认为0)

第二个数字表示切片的截至(但不包含)位置(默认为列表长度)

第三个数字表示切片的步长(默认为1),当步长省略时=可以顺便省略最后一个冒号

切片的作用:

  • 截取列表中任何部分得到一个新的列表
>>> a=[3,4,5,6,7,9,11,13,15,17]
>>> a[::]
[3, 4, 5, 6, 7, 9, 11, 13, 15, 17]
>>> a[::-1]   #步长为负数,从右向左切,得到反向副本
[17, 15, 13, 11, 9, 7, 6, 5, 4, 3]
>>> a[::2]  #下标从0开始隔一个元素取一个元素
[3, 5, 7, 11, 15]
>>> a[1::2]  #下标从1开始,隔一个元素取一个元素
[4, 6, 9, 13, 17]
>>> a[3::]   #下标从3开始往后的所有元素
[6, 7, 9, 11, 13, 15, 17]
>>> a[3:6]  #下标范围介于[3,6)元素
[6, 7, 9]
>>> a[3:6:1]
[6, 7, 9]
>>> a[0:100:1]  #在尾部截断不会抛出异常
[3, 4, 5, 6, 7, 9, 11, 13, 15, 17]
>>> a[100:]
[]
  • 修改和删除列表中的部分元素
  • 为列表对象增加元素
>>> a=[1,2,3]
>>> a[len(a):]=[9]  #在尾部追加元素
>>> a
[1, 2, 3, 9]
>>> a[:3]=[1,2,3]  #替换前三个元素
>>> a
[1, 2, 3, 9]
>>> a[:3]=[]  #删除前三个元素
>>> a
[9]

7.排序与逆排序

使用自身提供的sort()方法可以进行原地操作

>>> a=[3,4,5,6,7,8,9,11,23,45]
>>> import random
>>> random.shuffle(a)   #随机打乱顺序
>>> a
[6, 5, 45, 3, 11, 7, 4, 9, 23, 8]
>>> a.sort()  #默认为升序排序
>>> a
[3, 4, 5, 6, 7, 8, 9, 11, 23, 45]
>>> a.sort(reverse=True)
>>> a
[45, 23, 11, 9, 8, 7, 6, 5, 4, 3]
>>> a.sort(key=lambda x:len(str(x)))  #按转换为字符串后的长度排序
>>> a
[9, 8, 7, 6, 5, 4, 3, 45, 23, 11]

8.内置函数:sorted sum max min len

  1. sorted()

sorted()对列表进行排序,与列表对象的sort()方法不同,内置函数sorted()返回新的列表,并不对原列表进行任何修改

>>> a
[9, 8, 7, 6, 5, 4, 3, 45, 23, 11]
>>> sorted(a)  #进行排序
[3, 4, 5, 6, 7, 8, 9, 11, 23, 45]
>>> sorted(a,reverse=True)  #降序排列
[45, 23, 11, 9, 8, 7, 6, 5, 4, 3]
>>> a
[9, 8, 7, 6, 5, 4, 3, 45, 23, 11]

2.sum(列表)

对列表元素进行求和运算

同样也适用于元组,集合,range对象,字典,以及map对象和filter对象等等

>>> a
[9, 8, 7, 6, 5, 4, 3, 45, 23, 11]
>>> sum(a)  #元组求和
121
>>> a={1:1,2:5,3:8}  #对字典的“键”进行求和
>>> sum(a)
6
>>> sum(a.values())
14
>>> sum([[1],[2]],[])  #元素不是数值时需要指定第二个参数
[1, 2]

3.max min

返回列表中最大最小元素

同样适用于元组,字符串,集合,range对象,字典和迭代器对象等等

>>> a=[3,4,5,6,7,8,9,11,23,45]
>>> max(a)
45
>>> min(a)
3

4.len()

返回列表中的个数,同样适用于元组,字典,集合,字符串和range对象

>>> a
[3, 4, 5, 6, 7, 8, 9, 11, 23, 45]
>>> len(a)
10


http://www.kler.cn/a/7715.html

相关文章:

  • 【Qt】报错error: undefined reference to `vtable for的最简单解决
  • 论文阅读 - Causally Regularized Learning with Agnostic Data Selection
  • 2024 CCF中国开源大会“开源科学计算与系统建模openSCS”分论坛成功举办
  • npm list -g --depth=0(用来列出全局安装的所有 npm 软件包而不显示它们的依赖项)
  • vue 项目使用 nginx 部署
  • 前端知识点---this的用法 , this动态绑定(Javascript)
  • ROS实践06 自定义消息类型
  • Java基础(一)Java语言概述及入门
  • 【java】java中进制、byte、String转换问题
  • 经济法基础:第二章 会计法律制度
  • QT学习开发笔记(项目实战之智能家居物联 UI 界面开发 )
  • ftp创建虚拟用户【ftp精细化配置】
  • 编译技术-编译优化
  • 打破传统思维:关键词采集与市场调查的完美结合,引领你的行业领先
  • 优先级队列(java版)
  • SpringBoot 整合 JSP和MyBatis
  • Vue 10 - 计算属性
  • 不愧是腾讯架构师珍藏的“redis深度笔记(全彩版)”这细节讲解,神了
  • 【Linux】创建子进程
  • 有哪些特别小众而有趣的编程语言呢?
  • 项目管理方法不是最重要的,成功完成项目真正需要什么?
  • MySQL逻辑架构
  • 2023年第十四届蓝桥杯将至,来看看第十二届蓝桥杯javaB组题目如何
  • UNIX环境高级编程——标准I/O库
  • Linux必会100个命令(五十八)dnf命令
  • ToBeWritten之PWN入门介绍/环境搭建