Python简要复习

news2024/9/22 13:39:14

西电Python程序设计复习

Python基础知识

python的特点

兼具编译型解释型特性,兼顾过程式、函数式和面向对象编程范式的通用编程语言

解释型语言无需像编译型需要一次性的编译成机器码,然后运行,而是由名叫解释器的程序动态的将源代码逐句转化成机器代码执行

.py->.pyc

python环境中Python会将.pyc文件存储在__pycache__的目录下,并在文件名中加入Python版本标识字段

当运行源文件时,Python会先在相应位置寻找.pyc文件,找到.pyc后查看是否有改动,若有改动需要重新编译成字节码

Python程序无法一次性编译成机器码,是先变成字节码.pyc,然后由python虚拟机解释执行

pip包管理器

pip help #列出pip的子命令
pip install <packkage>
pip install <package>==<version>
pip uninstall <package>
pip list

python脚本

#!/usr/bin/env python

注意条件判断语句

if __name__=='__main__'

__name__ 是python的内置属性,是系统全局变量!每一个py文件都有一个属于自己的__name__

如果py文件作为模块被导入(import),那么__name__就是该py文件的文件名(也称 模块名);

如果py文件直接运行时(Ctrl+Shift+F10),那么__name__默认等于字符串__main__;

复合数据类型

列表

列表是若干对象的集合,其中的类型可以是不同的

In [1]: x=[1,3.14,"hello"]

In [2]: x
Out[2]: [1, 3.14, 'hello']

列表也是可变对象,指在对象创建后它的值仍能被修改

列表切片

使用冒号分割两个下标,分别代表起始下标(包含)和终止下标(不包含)

In [13]: x=[1,3.14,"hello"]

In [14]: a=x[0:-1]

In [15]: a
Out[15]: [1, 3.14]

列表常用方法

list.append(x)
list.extend(x) #将序列x中的所有元素依次添加至列表List的尾部
list.insert(index,x)#在列表指定位置插入对象x
list.pop([index])#删除尾部或者指定位置的元素
list.remove(x)#在列表中删除首次出现的指定元素x
list.clear#删除列表中的所有元素
list.index(x)#返回x元素的下标
list.count(x)#返回指定元素x的出现次数
list.sort()#对列表元素进行正序排列
list.reverse()
list.copy()#进行浅拷贝
In [22]: x
Out[22]: [1, 3.14, 'hello']

In [23]: x.append('world')
In [25]: x
Out[25]: [1, 3.14, 'hello', 'world']
In [26]: a=[1,2,3]

In [27]: x.extend(a)

In [28]: x
Out[28]: [1, 3.14, 'hello', 'world', 1, 2, 3]

列表推导式

In [29]: a=[i for i in [1,'2','3']]

In [30]: a
Out[30]: [1, '2', '3']
In [31]: [(i,j)for i in range(10) if i!=5 for j in range(3) if j>=2]
Out[31]: [(0, 2), (1, 2), (2, 2), (3, 2), (4, 2), (6, 2), (7, 2), (8, 2), (9, 2)]

元组

tuple是任意对象组成的序列,不支持原地修改,即元组已经创建,其中的元素用任何方式无法改变(不可变特性)

In [33]: x=(1,2,3)

In [34]: x
Out[34]: (1, 2, 3)

In [35]: y=tuple()

In [36]: y
Out[36]: ()

注意:元组无sortreverse方法

但是有sortedreversed方法,会返回一个新的序列对象

In [56]: x=(1,2,3,(1,2),[1,2,3])

In [57]: x
Out[57]: (1, 2, 3, (1, 2), [1, 2, 3])

In [58]: x[4][0]=None

In [59]: x
Out[59]: (1, 2, 3, (1, 2), [None, 2, 3])
In [61]: x[4]=None
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-61-dd313a01e66b> in <module>
----> 1 x[4]=None

TypeError: 'tuple' object does not support item assignment

字典

字典是键值对的可变集合

可用不可变对象作为

In [75]: x=dict(zip(keys,values))

In [76]: x
Out[76]: {'name': 'lihua', 'age': 12}
In [83]: x.get('name')#获取对应的键的值
Out[83]: 'lihua'

In [84]: x.update({'gender':'male'})

In [85]: x
Out[85]: {'name': 'lihua', 'age': 12, 'gender': 'male'}

keys() values items()分别对应字典的键、值和对象

键值对不可重复

实际是它的键不可重复

集合

set集合是无序可变序列,使用一对大括号{}界定,不允许重复

>>> a={1,2,3}
>>> type(a)
<class 'set'>
In [110]: a
Out[110]: {1, 2, 3, 4}

In [111]: a.remove(5)
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-111-fa8c667230ef> in <module>
----> 1 a.remove(5)

KeyError: 5

In [112]: a.discard(5)

In [113]: a
Out[113]: {1, 2, 3, 4}

集合的并交和差集运算

In [113]: a
Out[113]: {1, 2, 3, 4}
In [117]: s={1,3,5}

In [118]: a.union(s)
Out[118]: {1, 2, 3, 4, 5}

In [119]: a.intersection(s)
Out[119]: {1, 3}

In [120]: a.difference(s)
Out[120]: {2, 4}

深浅拷贝

浅拷贝出现在copy函数、列表切片

如果要将嵌套的每一次都拷贝,那就需要deep copy函数

Unicode和字符串

字符是文本的最小组成部分

字符集是人为筛选的多个字符的集合

编码规则是将字符集中的字符转化为可存储的字节序列所按照的标准

UTF-8可变长编码方案

若码位小于127(0x7f) 单个字节表示

码位在128-2047 两个字节

大于2048 三或者四个

汉语通常编译成三个字节

函数

传递实时参数的参数解包

可以用列表 元组 字典 集合等可迭代对象作为实参,并在实参名称前面加个’*’

In [174]: def func(a,b,c):
     ...:     print(a,b,c)
     ...:

In [175]: func(*[1,2,3])
1 2 3

如果是字典对象需要在前面加上’**’

'*‘和’**'如果出现在函数定义当中代表接受任意数量的参数,出现在函数调用代表参数解包

lambda表达式

lambda arg1,arg2,...,argN:expression 

执行lambda表达式会生成一个函数对象,可以将其赋给变量,供之后调用,这与使用def语句定义函数无区别

In [178]: f=lambda x, y: x + y

In [179]: f(1,2)
Out[179]: 3

全局变量和局部变量

global关键字

迭代器

>>> m=map(lambda x:x**2,[1,2,3])
>>> it1=m.__iter__()
>>> it1 is m
True
>>> it1.__next__()
1
>>> it1.__next__()
4
>>> it1.__next__()
9
>>> it1.__next__()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
#斐波那契函数迭代器
class Fibs:
    def __init__(self,n=10):
        self.a=0
        self.b=1
        self.n=n
    def __iter__(self):
        return self
    def __next__(self):
        self.a,self.b=self.b,self.a+self.b
        if self.a>self.n:
            raise StopIteration
        return self.a

生成器函数

TODO

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/801971.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker部署出现的问题

记录第一次使用Docker今天需要使用DockerFile文件在x86环境下部署镜像&#xff0c;给了我下面四个文件&#xff0c;让我生成首行的文件。 直接创建镜像报错 执行创造镜像命令 docker build -t wondersoft/ubuntu_scan_engine:latest .报错信息 报错原因&#xff1a; FROM …

数制系统——二、十、十六进制的相互转换

目录 1 二进制数制系统 1.1 二进制和 IPv4 地址 1.2 二进制位置记法 1.3 将二进制数转换为十进制数 1.4 十进制到二进制的转换 1.4.1 二进制和十进制互相转换游戏链接 1.5 Pv4 地址 2 十六进制数制系统 2.1 十六进制和 IPv6 地址 2.2 十进制到十六进制的转换 2.3 十…

【linux 结束pts/1踢人踢除另一个终端】

centos7上误执行了个命令&#xff0c;导致一直刷屏&#xff0c;强制CTRLC无法正常退出&#xff0c;一直出现如下&#xff1a; 网上搜索通过ctrlD&#xff0c;q均无法正常退出&#xff0c; 不想强行关掉&#xff0c;通过&#xff1a;who命令查看均用户&#xff1a; who mshns…

RocketMQ 行业分享

5.0的架构发生了重大调整&#xff0c;添加了一层rocketmq-proxy,可以通过grpc的方式接入。 参考 https://juejin.cn/post/7199413150973984827

plt绘制渐变颜色填充折线、曲线图

问题: 一般我们在绘制一些曲线或者折线图的时候需要进行颜色填充。例如 import matplotlib.pyplot as plt import numpy as npdata = np.loadtxt("0.txt").T x = data[0] y = data[1]fig, axs = plt.subplots(figsize=(4, 3)) axs.plot(x, y)# 设置xy轴范围 plt.x…

提升设计效率,深入解析CAD中的辅助命令

在CAD设计中&#xff0c;辅助命令是提高效率和精度的重要工具。无论是初学者还是有经验的设计师&#xff0c;掌握正确使用CAD中的辅助命令对于优化设计流程至关重要。本文将为你介绍一些常用的辅助命令&#xff0c;并分享如何正确运用它们来提升CAD设计的质量和效率。 正交函数…

无GPS下的自动驾驶系统解决方案

摘要&#xff1a; 随着自动驾驶技术的发展&#xff0c;在未知环境中智能汽车的定位技术成为该领域研究的核心。目前定位技术主要的解决方案是基于全球定位系统&#xff08;GPS&#xff09;&#xff0c;但是在某些特殊的环境中如下车库&#xff0c;没有 GPS 信号如何解决定位问…

(MYSQL)数据库服务端的启动与停止,登录与退出

MYSQL服务的启动与停止 方式一&#xff1a;右击左下角win图标——选择计算机管理——选择计算机管理&#xff08;本地&#xff09;——选择服务和应用程序——找到mysql&#xff08;此方法不好用&#xff09; 方式二&#xff1a;通过管理员身份运行&#xff08;必须是管理员身…

【C++11】——列表初始化、声明及STL变化

目录 1. C11简介 2. 统一的列表初始化 2.1 {}初始化 2.2 initializer_list容器 3. 声明 auto decltype nullptr 4. STL 中的一些变化 1. C11简介 在2003年C标准委员会曾经提交了一份技术勘误表(简称TC1)&#xff0c;使得C03这个名字已经取代了C98称为C11之前的最新C标…

正则表达式方法学习

正则表达式学习 1.能干嘛2.创建正则表达式3.关于正则表达式的方法3.1 正则的方法3.1.1 test3.1.2 compile3.1.3 exec捕获组对象具名捕获组对象非捕获组对象 3.2 String类型的对象的正则相关的方法3.2.1 search()3.2.2 replace()3.2.3 split()3.2.4 match()3.2.5 matchAll() 1.能…

电子科技大学入驻飞桨AI Studio高校专区,AI优质课程等你来学!

近日&#xff0c;电子科技大学高校专区在飞桨人工智能学习与实训社区AI Studio上线&#xff0c;双方将携手搭建人工智能教学实训平台专区&#xff0c;汇集优质教学实训资源&#xff0c;校企共同培育复合型 AI 人才&#xff0c;为国家输送高质量人才&#xff0c;促进国家智能化进…

13 Linux实操篇-Linux网络配置

13 Linux实操篇-Linux网络配置 文章目录 13 Linux实操篇-Linux网络配置13.1 NAT网络配置13.1.1 原理图讲解13.1.2 VMware虚拟网络编辑器13.1.3 查看Windows的网络配置-ipconfig13.1.4 查看Linux的网络配置-ifconfig13.1.5 网络检测检测工具-ping 13.2 Linux网络环境配置13.2.1 …

1400*B. Karen and Coffee

Examples input 3 2 4 91 94 92 97 97 99 92 94 93 97 95 96 90 100 output 3 3 0 4 input 2 1 1 1 1 200000 200000 90 100 output 0 解析&#xff1a; 题意为&#xff0c;给你多个区间&#xff08;会有重叠&#xff09;&#xff0c;每个区间的每个值都会为这个值累加…

server.max-http-header-size设置不当引发的线上OOM案例分析

问题现象 后台服务日志&#xff0c;大量报出如下异常&#xff0c;关键字&#xff1a;java.lang.OutOfMemoryError: Java heap space&#xff0c;问题指向&#xff1a;o.a.c.h.Http11NioProtocol [DirectJDKLog.java:175] Failed to complete processing of a request 问题定…

1071. 字符串的最大公因子

题目描述&#xff1a; 主要思路&#xff1a; ①&#xff1a;暴力依次判断每一段字符是否可以构成s和t ②&#xff1a;计算st串长度的最大公因子&#xff0c;判断是否可以构成 class Solution { public:bool check(string t,string s){string ans"";while(ans.lengt…

Squid代理配置

某些平台的服务需要配置白名单IP或服务器&#xff0c;我们配置了某个服务器&#xff0c;但是其他服务器也想访问这个平台&#xff0c;可以在白名单服务器上安装Squid&#xff0c;将其他服务器的服务代理到目标平台。 一、安装配置squid 首先在白名单服务器上安装squid: 1.切换…

pycharm粘贴代码出现zwsp

pycharm复制粘贴代码会出现zwsp pycharm复制粘贴代码会出现zwsp&#xff0c;这个不要担心&#xff0c; 解决方法一 选中 2.ctrlr跳出页面点击全部替换 3.全部替换完成&#xff0c;完美解决&#xff1a;

助力企业数字化转型的利器——奥威BI系统

如今&#xff0c;随着信息技术的迅猛发展&#xff0c;企业数字化转型已经成为不可回避的趋势。在这个数字化时代&#xff0c;企业需要根据大量的数据来做出准确的决策&#xff0c;抢占市场先机。而BI系统则成为一种帮助企业实现数字化转型的利器&#xff0c;其中以奥威BI系统为…

C. Tree Permutation

Problem - C - Codeforces 思路&#xff1a;这是一个树排列问题&#xff0c;只要求出所有的排列对应的情况然后除以排列的种类就可以了&#xff0c;对于一个排列来说n!来说&#xff0c;因为每个数的地位都是相等的&#xff0c;每条边的地位也是相等的&#xff08;相邻的两个数为…

Java-方法的使用

一、方法的概念和使用 1.1方法的含义 方法就是一个代码片段. 类似 C语言中的函数. 方法的作用&#xff1a; 1.能够模块化的组织代码(当代码规模比较复杂时)。 2.代码被重复使用, 一份代码可以在多个位置使用。 3.让代码更好理解更简单…