python学习第六站:列表

2023-11-15

1. 序列(sequence)

1.1 基本概念

• 序列是Python中最基本的一种数据结构。序列用于保存一组有序的数据,所有的数据在序列当中都有一个唯一的位置(索引)并且序列中的数据会按照添加的顺序来分配索引
• 数据结构指计算机中数据存储的方式

1.2 序列分类

• 可变序列(序列中的元素可以改变):例如 列表(list)字典(dict)
• 不可变序列(序列中的元素不能改变):例如 字符串(str)元组(tuple)

2. 列表(list)

• 列表是Python中的一个对象
• 列表的作用
• 列表中可以保存多个有序的数据
• 列表是用来存储对象的对象

2.1 列表的使用

• 列表的创建:通过[]来创建一个空列表

li = []
print(li,type(li))

[] <class ‘list’>

  • len() 获取列表中元素的个数,列表的长度=最大索引值+1
  • 通过索引获取列表元素,索引值可以为负,从右向左,-1开始

2.2 列表的切片

指从现有的列表中获取子列表,切片操作不影响原列表,原列表的值不变。
语法:列表[起始index:结束index+1:步长]

  • 通过切片获取元素时,包括起始但不包括结束位置的元素【左闭右开】
  • 步长可以省略,步长值为1
li = ["a","b","c",'d','e','f']
# 切片⬇️
print(li[0:2])
# 跳着切片,步长为2,⬇️表示获取元素的间隔
print(li[0::2])
# 起始位置与结束位置可以不写⬇️
print(li[:])
# 省略结束位置,⬇️从当前取到最后
print(li[1:])
# 省略开始位置,⬇️从开始到结束位置前1位
print(li[:3])
# 倒序输出⬇️
print(li[::-1])

[‘a’, ‘b’]
[‘a’, ‘c’, ‘e’] # 以2为步长,跳取值
[‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘fff’]
[‘b’, ‘c’, ‘d’, ‘e’, ‘fff’]
[‘a’, ‘b’, ‘c’]
[‘f’, ‘e’, ‘d’, ‘c’, ‘b’, ‘a’] #倒序输出

2.3 修改列表

  • 下标修改⬇️
li = [1,2,3,4]
li[0] = 9
print(li) #得到:[9,2,3,4]
  • del修改⬇️
li = [1,2,3,4]
del li[1]  #得到[1,3,4]
  • 切片修改⬇️
li = [1,2,3,4]
li[0:3] = 1235 #TypeError: can only assign an iterable不可以,必须传递一个序列
li[0:3] = '1235' #可以,多出来的插入到里面
li[0:0] = ['a'] #向索引为0的位置插入元素
#设置了步长后,序列中的元素个数必须和切片中被替换的元素个数一样⬇️
li[::2] = ['b'] #ValueError: attempt to assign sequence of size 1 to extended slice of size 3
  • 切片删除⬇️
li = [1,2,3,4]
li[1:3] = []

2.4 修改列表的方法

以下是方法:

  • li.append() #在列表最后添加一个元素
  • li.insert(index,obj)向列表中指定的位置插入元素。第一参数:插入的位置;第二参数:要插入的元素。
  • li.extend() #使用新序列扩展当前序列,与append不同的是可以插入多个元素。相当于li += [‘新列表’]
  • li.clear() #清空列表
  • li.pop() #根据索引,删除指定元素。有返回值,不指定索引时默认删除最后一个。
  • li.remove() # 删除指定值的元素。li.remove(“x x x”)
  • li.reverse() #反转列表
  • li.sort() #对列表元素进行排序
  • 列表降序排序:li.sort(reverse=true)

2.5 遍历列表

将列表中的元素取出来
#通过for循环遍历列表
语法:for 变量 in 遍历内容:
代码块

# 通过for循环遍历列表
for item in li:
	print(item)

2.5.1 range()函数

for i in range(9):
	print(i)

range(9) == range(0,9) == range(0,9,1)

3. 通用操作

3.1 + 和 *

• + 可以将两个列表拼接成一个列表

li = [1,2,3]+[4,5,6]

• * 可以将列表重复指定的次数 (注意2个列表不能够做乘法,要和整数做乘法运算)

li = [1,2,3]
print(li*3) #将列表重复n次

3.2 in 和 not in

• in用来检查指定元素是否在列表当中
• not in 用来检查指定元素是否不在列表当中

li = [1,2,3]
print(1 in li) # true
print(4 not in li) # true

• max() 获取列表中最大值
• min() 获取列表中最小值

lib = [1,2,3]
print(min(lib),max(lib))

3.3 两个方法

• list.index(x[, start[, end]]) #获取指定元素在列表中的位置
• 第一个参数 指定元素
• 第二个参数 表示查找的起始位置
• 第三个参数 表示查找的结束位置

• list.count(x) 统计指定元素在列表中出现的个数

li = [1,2,3,4,5,3,4,24,3]
print(li.count(3)) #3

4 做练习

1.现在有 a = [1,2,3,4,5,6] 不通过函数的形式实现列表的反转([6,5,4,3,2,1]) 并写出推导过程

a[::-1]

推导过程

a = [1,2,3,4,5,6]

a[:] #可以省略头尾
[1, 2, 3, 4, 5, 6]

a[0:] # 可以只省略尾
[1, 2, 3, 4, 5, 6]

a[:6] # 可以只省略头
[1, 2, 3, 4, 5, 6]

a[::1] # 可以省略头尾,默认步长为1
[1, 2, 3, 4, 5, 6]

a[::2] # 可以省略头尾,步长为2时跨取
[1, 3, 5]

a[::0] # 可以省略头尾,步长不能为0
Traceback (most recent call last):
File “”, line 1, in
ValueError: slice step cannot be zero

a[::-1] # 可以省略头尾,步长为-1时倒序输出
[6, 5, 4, 3, 2, 1]

2.给用户9次机会 猜1 - 10 个数字随机来猜数字。如果随机的数字和用户输入的数字一致则表示正确,如果不一致则表示错误。最终结果要求用户怎么也猜不对

t = 0
li = []
li2 = [1,2,3,4,5,6,7,8,9,10]

while t < 9:
    num = int(input("请输入一个数字(1-10):"))
    if num in li:  # 逻辑项,非重点
        print("此数字已经猜过了,请重新输入⬇️")
        continue
    elif num not in li2:  # 逻辑项,非重点
        print("输入的数字不在(1-10)范围内,请重新输入⬇️")
        continue
    else:
        t += 1
        li.append(num)
    print("猜测错误,请重新猜⬇️")

for i in li2:
    if i not in li:
        print("正确的数字是:",i)

请输入一个数字(1-10):2
猜测错误,请重新猜⬇️
请输入一个数字(1-10):2
此数字已经猜过了,请重新输入⬇️
请输入一个数字(1-10):1
猜测错误,请重新猜⬇️
请输入一个数字(1-10):3
猜测错误,请重新猜⬇️
请输入一个数字(1-10):4
猜测错误,请重新猜⬇️
请输入一个数字(1-10):6
猜测错误,请重新猜⬇️
请输入一个数字(1-10):7
猜测错误,请重新猜⬇️
请输入一个数字(1-10):8
猜测错误,请重新猜⬇️
请输入一个数字(1-10):0
输入的数字不在(1-10)范围内,请重新输入⬇️
请输入一个数字(1-10):9
猜测错误,请重新猜⬇️
请输入一个数字(1-10):10
猜测错误,请重新猜⬇️
正确的数字是: 5
.
Process finished with exit code 0

3.有两个列表 lst1 = [11, 22, 33] lst2 = [22, 33, 44]获取内容相同的元素

for i in lst1:
	if i in lst2:
		print i

22
33

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python学习第六站:列表 的相关文章

随机推荐

  • 经济,jiaxi

  • moviepy音视频开发:音频合成类CompositeAudioClip介绍

    前往老猿Python博文目录 CompositeAudioClip是AudioClip的直接子类 用于将几个音频剪辑合成为一个音频剪辑 CompositeAudioClip类只有一个构造方法 在构造方法内定义了一个内嵌函数make fram
  • 蓝屏错误代码分析和解决方法

    文字代码 可能的原因 可尝试的解决方法 0x00000001 APC INDEX MISMATCH 驱动出现问题 或安装了错误 不兼容的驱动 更新 重新安装相应设备官网的驱动 0x00000005 INVALID PROCESS ATTAC
  • VSCode的Pettier插件原理和设置

    最近写了一个 Prettier 插件 可以达到这样的效果 同事每次保存代码的时候 import 语句的顺序都会随机变 但是他去 prettier 配置文件里还啥也发现不了 于是就会一脸懵逼 那么这个同事发现了会打你的 prettier 插件
  • 在生信中利用Chat GPT/GPT4

    论文链接Ten Quick Tips for Harnessing the Power of ChatGPT GPT 4 in Computational Biology Papers With Code 之前在paper with cod
  • JAVA-JDK8的特性之Lambda表达式

    1 Lambda表达式 2 函数式接口 3 方法引用 4 Stream流 5 日期时间类 1 Lambda表达式 1 1 Lambda的由来 package demo01 public class Test01 public static
  • 从mpeg ts文件中提取I帧(1):将ts包拼装为section或pes包

    写在前面的话 不觉中已经在数码工作了十年有余 十年的青春 十年的汗水 如今即将离开 个中滋味难以言表 以后可能不会在广电行业工作了 就用这个小程序 为自己十年的广电工作画上一个句号吧 依旧是 版权没有 盗版不纠 欢迎转载 本程序的功能 提取
  • Linux中Crontab(定时任务)命令详解及使用教程

    Crontab介绍 Linux crontab是用来crontab命令常见于Unix和类Unix的操作系统之中 用于设置周期性被执行的指令 该命令从标准输入设备读取指令 并将其存放于 crontab 文件中 以供之后读取和执行 该词来源于希
  • altium designer 画箭头

    一直在网上找如何在altium designer 中画箭头 没有结果 实然想到在AD的元件库中有不少元件是有箭头的 如果打开库文件 不就能看其属性了吗 于是选择Miscellaneous Devices IntLib打开做 试验 在打开时会
  • 萌新养成

    金三银四跳槽季 这个时候需要做好准备的可不仅仅只有在职或者离职的萝卜 尚未毕业的萌新也需要提早做准备了 毕竟把自己修炼成一个优秀的萝卜也不是一件容易的事 所以 放下你找对象 刷副本 世界游的想法 加入我们为你量身定制的人才培养计划 加入营长
  • lambda函数详解

    lambda函数的使用 捕获列表 常量性区别1 常量性区别2 lambda函数的实现 注意事项 lambda函数的使用 lambda函数的完整形式如下 capture parameters mutable gt return type st
  • K近邻估计

    Kn 近邻估计 KN近邻估计基本思想 预先确定n的某个函数Kn 然后再x点周围选择一个区域 调整区域体积大小 直至Kn个样本落入区域中 这些样本被称为点x的Kn个最近邻 如果x点附近的密度比较高 则V的体积自然就相对较小 从而可以提升分辨力
  • Maven下载与安装

    Maven下载 Maven官网 https maven apache org 进入官网 点击Download 可以看见4个文件 apache maven 3 8 7 bin tar gz是Linux版安装的 apache maven 3 8
  • 点云配准

    目录 一 点云配准概念 二 点云配准分类 1 无辅助的自动拼接 2 人工辅助标志点 三 配准常见流程 1 粗配准 2 精配准 1 奇异值分解求解 2 四元素求解旋转矩阵 参考文献 一 点云配准概念 由于三维扫描测量设备受测量方式的限制和被测
  • Qt中的QStringLiteral宏

    使用 QStringLiteral 宏可以在编译期把代码里的常量字符串 str 直接构造为 QString 对象 于是运行时就不再需要额外的构造开销了 如果编译器支持 则 QStringLiteral 宏在编译时从 str 生成一个 QSt
  • 计算机无法投影,电脑无法识别投影仪-电脑为什么检测不到投影仪,应该怎么安装...

    电脑无法识别投影仪 电脑为什么检测不到投影仪 应该怎么安装 投影仪销量排行
  • 【TensorFlow】卷积tf.nn.conv2d()函数使用解析 ( 附代码详解注释 )

    最近在研究学习TensorFlow 在做识别手写数字的demo时 遇到了tf nn conv2d这个方法 查阅了官网的API 发现讲得比较简略 还是没理解 google了一下 参考了网上一些朋友写得博客 结合自己的理解 差不多整明白了 方法
  • PyQt槽函数添加参数

    PyQt槽函数添加参数 这篇文章的前提是你得知道槽函数是啥 在这边我就不解释了 如果你是自定义信号 并且使用emit 方法进行发送的 那在emit里面就可以传入参数 这个懂得都懂 不懂得可以看一下这个大佬的文章link 他写的非常详细 如果
  • ES6-Map、Set与Arrary的转换

    Map与Array的转换 这个数组要是二维数组
  • python学习第六站:列表

    序列 一 1 序列 sequence 1 1 基本概念 1 2 序列分类 2 列表 list 2 1 列表的使用 2 2 列表的切片 2 3 修改列表 2 4 修改列表的方法 2 5 遍历列表 2 5 1 range 函数 3 通用操作 3