Python第三课

2023-11-08

@[枭]


Python第三课


今天讲解了Python的


  深浅复制

  列表排序与逆序、随机数

  列表推导式




深浅复制



 ①浅复制

  概念:浅复制是生成一个新的列表,把原列表的所有引用全复制到新列表中,切片返回的就是浅复制

在浅复制中,如若旧列表中包含有列表,在新列表中该表旧列表中列表元素时,旧列表也会随之改变,如:

    >>>aList=[3,5,7]
    >>>bList=aList[::]
    >>>aList==bList				#这里的“==”是询问是否元素一样
    True
    aList is bList			    #这里的“is”是询问是否同一对象
    False

但如果是:

    >>>aList=[3,[5],7]
    >>>bList=t=aList[::]
    >>>bList[1].append(6)		#这里是在索引为1处增加一个6
    >>>bList
    [3,[5,6],7]
    >>>aList
    [3,[5,6],7]

  综上可以得到,旧列表在浅复制时,不可变类型(如常数)不会受到影响,而可变类型(如列表)会受到影响


 ②深复制

  在使用深复制函数时,需要首先使用

import copy

深复制函数的格式为:

copy.deepcopy()

这里还是使用例子来解释:

    >>>aList=[3,[5],7]
    >>>bList=copy.deepcopy(aList)
    >>>bList[1].append(6)
    >>>bList
    [3,[5,6],7]
    >>>aList
    [3,[5],7]

  综上可以得到,深复制时不会影响到旧列表



列表排序与逆序、随机数



 ①列表排序

  排序包含有升序和降序,其中可以通过key函数来规定排序规则

升序的代码如下:

列表名.sort(reverse=False)
当括号里不填时默认为升序

降序的代码如下:

列表名.sort(reverse=True)

  sort函数不是内置函数,在代码之前需要加上import random

关于key来规定列表排序规则,这里用一个例子:

    >>>aList=[17,15,13,11,9,7,6,5,4,3]
    >>>aList.sort(key=lambda x:len(str(x)))
#lambda是匿名函数,这里代码的意思是通过列表元素转化的字符串长度进行排序
    >>>aList
    [17,15,13,11,9,7,6,5,4,3]
#长度相同时,通过旧列表的顺序进行排序

    sort函数会影响旧列表
  而 sorted()为内置函数,不会影响旧列表,且不用加import

用法如下:

	>>>aList=[3,4,5,6,7,9,11,13,15,17]
	>>>sorted(aList,reverse=True)
	[17,15,13,11,9,7,6,5,4,3]



 ②列表逆序

  同sort()函数,reverse()函数不是内置函数,在代码之前需要加上import random

列表逆序,就是列表的首尾不断交换元素,类似于第一排与倒数第一排交换,第二排与倒数第二排交换,以此类推


   reverse()函数会影响旧列表

  而reversed()为内置函数,不会影响旧列表,且不用加import

但是,reversed是个对象,不能直接访问元素
访问元素需要在前面加list()

比如说:

	>>>aList=[3,4,5,6,7,9,11,13,15,17]
	>>>newList=reversed(aList)
	>>>newList
	<Listreverseiterator object at 0x000...>
	>>>list(newList)
	[17,15,13,11,9,7,6,5,4,3]	



 ③随机数

要使用随机数,需要加上import random
常用的随机数函数有

random.shuffle(列表名)    随机打乱列表的顺序
random.random()    产生0到1之间的随机浮点数
random.randrange(start,end,间隔)  产生间隔为X的随机整数

如果要生成十个随机数,可以这样写

	import random
	aList=[random.randint(0,100) for i in range(10)]

如果要生成12—18随机选择数,可以这样写

	>>>import random
	>>>aList=random.randint(12,18)


列表推导式

  列表推导式的语法形式为

[exp for variable in iterable in iterable if condition]

e.g.

	vec=[[1,2,3],[4,5,6],[7,8,9]]
	[num for elem in vec for num in elem]

其中,for elem in vec遍历的是行,及vec[]

for num in elem遍历的是列,及vec[][]

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

Python第三课 的相关文章

随机推荐

  • 2023华为od机试统一考试B卷 Java【最小循环子数组】

    前言 本题使用Java解答 如果需要Python版本的代码 请参考以下链接 点我 题目描述 给定一个由若干整数组成的数组nums 请检查数组是否是由某个子数组重复循环拼接而成 请输出这个最小的子数组 输入描述 第一行输入数组中元素个数n 1
  • matlab中使用colormap没有效果

    在做数字图像处理实验的时候 需要将灰度图像做fft变换 显示其频谱图 代码如下 clc clear close all figure 1 grayimg imread grayimg jpg imshow grayimg figure 2
  • A Review on Deep Learning Techniques Applied to Semantic Segmentation

    Introduction Terminology and Background Concepts 1 Common Deep Network Architectures AlexNet VGG 16 GoogLeNet ResNet ReN
  • Pytest接口自动化测试实战演练

    结合单元测试框架pytest 数据驱动模型 allure 目录 api 存储测试接口 conftest py 设置前置操作 目前前置操作 1 获取token并传入headers 2 获取命令行参数给到环境变量 指定运行环境 commmon
  • 线下实践阿里云:「 云原生技术实践营 - 容器微服务专场 」

    一 前言 自己在杭州工作和生活也有将近10年 由于有些前同事和朋友在阿里上班 也过去玩过几次 在印象中 作为联谊公司 还和阿里组织过一些小规模的活动 比如相亲和篮球比赛 所以 对阿里杭州的滨江园区和西溪园区还都比较熟悉 如今 在南京工作和生
  • HTML标签概述及<html>,<head>,<title>,<link>,<form>,<meta>详细介绍

    HTML部分标签及其介绍 介绍 引用 HTML标签概述 基本标签 常用格式标签 表单标签 列表标签 应用标签 视频标签 创建链接 关系标签 表格标签 样式 节标签 元信息标签 编程标签 HTML组成 Html声明 Html头部 body部分
  • FastAPI从入门到实战(0)——初识FastAPI

    本文主要介绍一下FastAPI是什么 多数内容摘自官网 https fastapi tiangolo com zh FastAPI是什么 FastAPI 是一个用于构建 API 的现代 快速 高性能 的 web 框架 使用 Python 3
  • 写正确的整数二分

    二分 第一篇二分搜索论文是 1946 年发表 然而第一个没有 bug 的二分查找法却是在 1962 年才出现 中间用了 16 年的时间 不知道哪里看的 整数二分 yxc二分模板 二分的本质是二段性不是单调性 当想找不满足性质的边界值 红色区
  • 简单的hardfault追踪以及cm_backtrace错误追踪

    最近和朋友聊关于错误追踪的一些问题 有不少人知道使用 但是原理却不是很理解 正好最近没事我打算简单写一下 写的不好或者有错误的地方多多理解啊 首先是我们以前使用一种简单的错误追踪hardfault 这个原理比较简单 大概说一下 就是在进ha
  • 常见算子使用_LaTeX系列笔记(4)-微分算子要不要写正体?

    上一篇笔记中介绍了数学运算符的使用 其中有一个问题是微分算子 是否应该是正体 孙孟越 LaTeX系列笔记 3 数学运算符 Math Operator zhuanlan zhihu com 这个问题是非常常见的 我们来分析一下 正体 斜体的优
  • 实时车辆行人多目标检测与跟踪系统(含UI界面,Python代码)

    算法架构 目标检测 yolov5 目标跟踪 OCSort 其中 Yolov5 带有详细的训练步骤 可以根据训练文档 训练自己的数据集 及其方便 另外后续 目标检测会添加 yolov7 yolox 目标跟踪会添加 ByteTrack deep
  • 剑指offer:数字序列中某一位的数字、把数字翻译成字符串、礼物的最大价值、最长不含重复字符的子串、丑数、第一个只出现一次的字符、数组中的逆序对、两个链表的第一个公共节点、在排序数组中查找数字

    数字序列中某一位的数字 题目 题解 代码 public int findNthDigit int n int digit 1 long start 1 long count 9 while n gt count n count start
  • 滤波电容的选择

    滤波电容的选择 1 电容数量 一般对于低频电路的话 一般为2个 一个用来滤除纹波 一个用来滤除高频信号 如果出现较大的瞬时电流 可以加一个大的钽电容 2 电容容量 通常都说大容值和小容值 其实是去耦和旁路 一般电路去耦的话0 1uF即可 考
  • 微服务网关

    1 微服务网关的概述 不同的微服务一般会有不同的网络地址 而外部客户端可能需要调用多个服务的接口才能完成一个业务需求 如果让客户端直接与各个微服务通信 会有以下的问题 客户端会多次请求不同的微服务 增加了客户端的复杂性 存在跨域请求 在一定
  • easyExcel实现excel文件上传和下载

    一 easyExcel简介 在工作中 经常需要把excel中的数据导入系统 亦或是把系统中符合筛选条件的数据通过excel的方式导出 Java解析 生成Excel比较有名的框架有Apache poi jxl 但他们都存在一个严重的问题就是非
  • linux replace \r\n to \n

    cat test log tr d r hexdump C tail 转载于 https www cnblogs com long123king p 3832986 html
  • springBoot整合Shiro(详细教程分析)

    目录 一 前言 二 SpringBoot整合Shiro 2 1 导入依赖 2 2 创建实体 2 3 配置Shiro 2 4 编写CustomRealm 2 5 编写相关的接口 2 6 业务实现代码 三 测试 四 参考文献 一 前言 1 1
  • 分布式爬虫理念

    目录 分布式爬虫理念 1 分布式爬虫框架 2 维护爬取队列 3 去重 4 防止中断 1 分布式爬虫框架 Scrapy中有一个本地爬取队列Queue 这个队列是利用depue模块实现的 新的Repuest生成就会被放到队列里 随后被调度器Sc
  • java 循环遍历字符串_Java 程序迭代遍历字符串中的每个字符

    Java 程序迭代遍历字符串中的每个字符 在本教程中 我们将学习遍历字符串的每个字符 要理解此示例 您应该了解以下Java编程主题 示例1 使用for循环遍历字符串的每个字符 示例class Main public static void
  • Python第三课

    枭 Python第三课 今天讲解了Python的 深浅复制 列表排序与逆序 随机数 列表推导式 深浅复制 浅复制 概念 浅复制是生成一个新的列表 把原列表的所有引用全复制到新列表中 切片返回的就是浅复制 在浅复制中 如若旧列表中包含有列表