【python】基础语法

文章目录

  • 元组
  • 列表
  • 字典
  • 集合
  • 推导式
  • 函数
  • 错误和异常处理
  • 文件和操作系统


元组

元组是一个固定长度,不可改变的Python序列对象。创建元组的最简单方式,是用逗号分隔一列值。

  1. 创建

在这里插入图片描述
2. 元组不可修改的解释

对于元组对象不可变的说明,通俗一点就是,不能更换里面的对象,但是里面对象本来就是可以修改,那我们可以修改原本对象的内容:
在这里插入图片描述3. 其他一些小知识
(1)可以通过加号将多个元组串联起来
在这里插入图片描述(2)元组乘以一个整数,像列表一样,会将几个元组的复制串联起来:(对象本身并没有被复制,只是引用了它)

在这里插入图片描述
(3)元组可以拆分

在这里插入图片描述如何只需要元组的前两个值,后面的不需要,舍弃,该怎么操作:
在这里插入图片描述
(4)count方法,也适用于列表,可以统计某个值得出现频率:

在这里插入图片描述


列表

与元组对比,列表的长度可变、内容可以被修改。你可以用方括号定义,或用list函数:

  1. 创建

在这里插入图片描述在这里插入图片描述
2. 添加元素

在这里插入图片描述
3. 删除元素
在这里插入图片描述
4. 用in可以检查列表是否包含某个值:
在这里插入图片描述
5. 与元组类似,可以用加号将两个列表串联起来:
在这里插入图片描述在这里插入图片描述
6. 排序

(1)sort 将一个列表原地排序(不创建新的对象)

在这里插入图片描述在这里插入图片描述

(2)二分法插入数据(bisect模块不会检查列表是否已排好序,进行检查的话会耗费大量计算。因此,对未排序的列表使用bisect不会产生错误,但结果不一定正确)
在这里插入图片描述

  1. 切片操作
    切片输出,赋值。切片的起始元素是包括的,不包含结束元素
    在这里插入图片描述在这里插入图片描述
  2. 序列函数enumerate
    在这里插入图片描述
  3. sorted函数
    sorted函数可以从任意序列的元素返回一个新的排好序的列表:
    在这里插入图片描述
  4. zip函数
    zip可以将多个列表、元组或其它序列成对组合成一个元组列表:
    在这里插入图片描述
    zip可以处理任意多的序列,元素的个数取决于最短的序列:

在这里插入图片描述zip的常见用法之一是同时迭代多个序列,可能结合enumerate使用:

在这里插入图片描述
给出一个“被压缩的”序列,zip可以被用来解压序列。也可以当作把行的列表转换为列的列表。
在这里插入图片描述
11. reversed函数

reversed可以从后向前迭代一个序列:

在这里插入图片描述


字典

哈希映射或关联数组。它是键值对的大小可变集合,键和值都是Python对象。创建字典的方法之一是使用尖括号,用冒号分隔键和值:
在这里插入图片描述在这里插入图片描述
在这里插入图片描述将两个序列配对组合成字典:

mapping = {}
for key, value in zip(key_list, value_list):mapping[key] = value

或:

mapping = dict(zip(key_list, value_list))

找某个key的value,没有返回default_value:

value = some_dict.get(key, default_value)

通过首字母分类:

在这里插入图片描述或:
在这里插入图片描述字典的值可以是任意Python对象,而键通常是不可变的标量类型(整数、浮点型、字符串)或元组(元组中的对象必须是不可变的)。


集合

集合是无序的不可重复的元素的集合。你可以把它当做字典,但是只有键没有值。可以用两种方式创建集合:通过set函数或使用尖括号set语句:

set([2, 2, 2, 1, 3, 3]) #{2, 2, 2, 1, 3, 3}

相关用法:
在这里插入图片描述


推导式

  1. 列表、集合和字典推导式
result = [expr for val in collection if condition]

等价于:

result = []
for val in collection:if condition:result.append(expr)

示例:
在这里插入图片描述字典:

dict_comp = {key-expr : value-expr for value in collection if condition}

集合:

set_comp = {expr for value in collection if condition}
  1. 嵌套列表推导式
    在这里插入图片描述元组展平:
    在这里插入图片描述for表达式的顺序是与嵌套for循环的顺序一样(而不是列表推导式的顺序)
    上述还原代码:
flattened = []for tup in some_tuples:for x in tup:flattened.append(x)

在这里插入图片描述


函数

函数使用def关键字声明,用return关键字返回值:

def my_function(x, y, z=1.5):if z > 1:return z * (x + y)else:return z / (x + y)

其他一些特色:
(1)可返回多个值:【该函数其实只返回了一个对象,也就是一个元组,最后该元组会被拆包到各个结果变量中】

def f():a = 5b = 6c = 7return a, b, ca, b, c = f()

(2)用内建的字符串方法和正则表达式re模块去除空白符、删除各种标点符号、正确的大写格式等
在这里插入图片描述等价于:

def remove_punctuation(value):return re.sub('[!#?]', '', value)clean_ops = [str.strip, remove_punctuation, str.title]def clean_strings(strings, ops):result = []for value in strings:for function in ops:value = function(value)result.append(value)return result

还可以将函数用作其他函数的参数,比如内置的map函数,它用于在一组数据上应用一个函数:

for x in map(remove_punctuation, states):print(x)

(3)匿名(lambda)函数
它仅由单条语句组成,该语句的结果就是返回值。它是通过lambda关键字定义的,这个关键字没有别的含义,仅仅是说“我们正在声明的是一个匿名函数”。

def short_function(x):return x * 2
# 等价
equiv_anon = lambda x: x * 2

常见用法:

def apply_to_list(some_list, f):return [f(x) for x in some_list]ints = [4, 0, 1, 5, 6]
apply_to_list(ints, lambda x: x * 2)

在这里插入图片描述(4)柯里化:部分参数应用,对于某些函数,我们可以直接给定某些参数,方便后面调用
在这里插入图片描述(5)生成器
在这里插入图片描述
可以用下面迭代器代码来代替上面:

ict_iterator = iter(some_dict)  # 迭代器是一种特殊对象
list(dict_iterator)

生成器(generator)是构造新的可迭代对象的一种简单方式。一般的函数执行之后只会返回单个值,而生成器则是以延迟的方式返回一个值序列,即每返回一个值之后暂停,直到下一个值被请求时再继续。要创建一个生成器,只需将函数中的return替换为yeild即可:

def squares(n=10):print('Generating squares from 1 to {0}'.format(n ** 2))for i in range(1, n + 1):yield i ** 2

调用该生成器时,没有任何代码会被立即执行,直到你从该生成器中请求元素时,它才会开始执行其代码:

gen = squares() # 并不会立即执行
for x in gen:  # 该生成器中请求元素,开始执行print(x, end=' ')

(6)生成器表达式
另一种更简洁的构造生成器的方法是使用生成器表达式(generator expression)。这是一种类似于列表、字典、集合推导式的生成器。其创建方式为,把列表推导式两端的方括号改成圆括号:

gen = (x ** 2 for x in range(100))
# 等价于
def _make_gen():for x in range(100):yield x ** 2
gen = _make_gen()

(7)itertools模块
标准库itertools模块中有一组用于许多常见数据算法的生成器。例如,groupby可以接受任何序列和一个函数。它根据函数的返回值对序列中的连续元素进行分组。下面是一个例子:

import itertools
first_letter = lambda x: x[0]
names = ['Alan', 'Adam', 'Wes', 'Will', 'Albert', 'Steven']
for letter, names in itertools.groupby(names, first_letter):print(letter, list(names)) # names is a generator

在这里插入图片描述常用到的itertools函数:
在这里插入图片描述


错误和异常处理

(1)把有异常放到try/except代码块中处理
在这里插入图片描述except去捕获异常时,可以元组指定异常的类型(多个异常类型),如果需要捕获所以异常就不需要指定。

常见的文件处理:

f = open(path, 'w')try:write_to_file(f)
except:print('Failed')
else:print('Succeeded')
finally:f.close()

文件和操作系统

(1)简单的文件操作
在这里插入图片描述常常用with语句来代替上面的:这样可以在退出代码块时,自动关闭文件。

with open(path) as f:lines = [x.rstrip() for x in f]

关于open()第二参数说明,默认是f = open(path, 'r')
在这里插入图片描述对于可读文件,一些常用的方法是read、seek和tell。read会从文件返回字符。字符的内容是由文件的编码决定的(如UTF-8):

在这里插入图片描述
改变句柄的位置使用seek函数
在这里插入图片描述
写文件:
在这里插入图片描述其他方法:
在这里插入图片描述


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

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

相关文章

xxl-job 2.2之后版本高版本executor未授权访问漏洞

xxl-job 低版本executor未授权访问 低版本的executor未授权访问漏洞是 POST /run HTTP/1.1 Host: your-ip:9999 Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like G…

Servlet开发-通过代码案例熟悉HttpServletRequest类

关于Servlet开发的流程推荐看servlet开发-通过Tomcat部署一个简单的webapp Servlet开发与idea集成的插件安装推荐看idea集成tomcat(Smart Tomcate插件安装) postman(第三方创建HTTP请求工具)的安装推荐看创建HTTP请求的几种方式…

LEO天线,全球市场总体规模,头部前八大厂商排名及市场份额

LEO天线全球市场总体规模 据QYResearch调研团队最新报告“全球LEO天线市场报告2023-2029”显示,预计2029年全球LEO天线市场规模将达到3545.3百万美元,未来几年年复合增长率CAGR为29.6%。 主要驱动因素: 近年来,全球航天工业的投资激增&#…

Archlinux Timeshift的系统备份与还原

服务器在滚挂或误删系统文件,timeshift系统备份与还原的情景: 安装 timeshif 1 yay -s timeshif 备份设置 选择快照类型 此处选择【RSYNC】 选择储存位置 每台设备安装分区不一样,大家安装实际情况选择,一般选择比较大的空间存储,并且最好是机械,这样不容易损坏 设置计…

PHP开发框架及特点

PHP有许多开发框架,每个框架都有其独特的特点和用途。以下是一些常见的PHP开发框架以及它们的特点,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.Laravel Laravel是一个流行的PHP框架…

前沿研究|16s+宏基因组binning揭示大型藻类附生微生物群落核心组成

发表期刊:Microbiome 发表时间:2023 影响因子:15.5 DOI: 10.1186/s40168-023-01559-1 研究背景 大型藻类附生微生物群落是新型酶类和化合物的丰富资源,在维持沿海系统的高生物生产力和生物多样性方面发挥着重要的作用。但迄今…

【kylin】【ubuntu】搭建本地源

文章目录 一、制作一个本地源仓库制作ubuntu本地仓库制作kylin本地源 二、制作内网源服务器ubuntu系统kylin系统 三、使用内网源ubuntukylin 一、制作一个本地源仓库 制作ubuntu本地仓库 首先需要构建一个本地仓库,用来存放软件包 mkdir -p /path/to/localname/pac…

HTTP 协商缓存 Last-Modified,If-Modified-Since

浏览器第一次跟服务器请求一个资源,服务器在返回这个资源的同时,在respone header加上Last-Modified属性(表示这个资源在服务器上的最后修改时间): ----------------------------------------------------------------…

太实用了! 20分钟彻底理解【Pointpillars论文】,妥妥的!

PointPillars: Fast Encoders for Object Detection from Point Clouds PointPillars:快就对了 摘要(可跳过): 这帮人提出了PointPillars,一种新颖的编码器,它利用PointNets来学习以垂直列组织的点云&am…

【WSN】无线传感器网络模拟器研究(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 💥1 概述 我们进行了一项关于无线传感器网络(WSN)模拟器的研究,旨在提供更好的协议应用和实时更新的能力。 首先&am…

华为---STP协议简介(一)

生成树协议简介 什么是生成树协议 STP(Spanning Tree Protocol)是一种由交换机运行的、用来解决交换网络中环路问题的数据链路层协议。为提高网络可靠性,交换网络中通常会使用冗余链路,但是冗余链路会给交换网络带来环路风险&…

网工内推 | H3C售前工程师,上市公司,13薪,有带薪年假、年终奖

01 长虹佳华 招聘岗位:高级售前工程师(H3C) 职责描述: 1. 负责公司签约代理的网络安全产品在区域的项目售前技术支持工作,包括项目售前交流、方案编写、招投标、产品测试等相关支持工作; 2. 与厂商产品部门…

nodejs在pdf中绘制表格

需求 之前我已经了解过如何在pdf模板中填写字段了 nodejs根据pdf模板填入中文数据并生成新的pdf文件https://blog.csdn.net/ArmadaDK/article/details/132456324 但是当我具体使用的时候,我发现我的模板里面有表格,表格的长度是不固定的,所…

Python入门自学进阶-Web框架——42、Web框架了解-bottle、flask

WEB框架的三大组件:路由系统、控制器(含模板渲染)、数据库操作 微型框架:依赖第三方写的socket,WSGI, 本身功能少 安装: pip install bottle pip install flask 安装flask,同时安…

conan入门(二十七):因profile [env]字段废弃导致的boost/1.81.0 在aarch64-linux-gnu下交叉编译失败

今天在尝试用conan 1.60.0使用aarch64-linux-gnu编译器交叉编译boost/1.81.0时报错了: conan install boost/1.81.0 -pr:h aarch64-linux-gnu.jinja -pr:b default --build boost输出如下: Configuration (profile_host): [settings] archarmv8 arch_b…

SQL做流水号

SELECT REPLICATE(0, 3 - LEN(3)) 3 AS 流水号 SELECT REPLICATE(0, 5 - LEN(3)) 3 AS 流水号 SELECT REPLICATE(0, 8 - LEN(3)) 3 AS 流水号

Java中String转换为double类型

这次的java作业是写一个数字转换的小项目,其中从输入框中获取的是String类型,但是要进行数字操作,此时要用到很多操作String类型数据的方法了。 从javafx输入框中获取到String类型后,首先是要判断是否能转换为数字或者小数形式&a…

实验三十三、三端稳压器 LM7805 稳压性能的研究

一、题目 LM7805 输出电压、电压调整率、电流调整率以及输出纹波电压的研究。 二、仿真电路 电路如图1所示。集成稳压芯片采用 LM7805CT。 三、仿真内容 (1)测量图1(a)LM7805CT 的电压调整率,测量条件为 I O 50…

嵌入式Linux应用开发-基础知识-第十七章异常与中断的概念及处理流程

嵌入式Linux应用开发-基础知识-第十七章异常与中断的概念及处理流程 第十七章 异常与中断的概念及处理流程17.1 中断的引入17.1.1 妈妈怎么知道孩子醒了17.1.2 嵌入系统中也有类似的情况 17.2 中断的处理流程17.3 异常向量表17.4 参考资料 第十七章 异常与中断的概念及处理流程…

【C语言】快速排序

文章目录 一、hoare版本二、挖坑法三、前后指针法四、非递归快排五、快速排序优化1、三数取中选key值2、小区间优化 六、代码测试 一、hoare版本 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法,其基本思想为:任取待排序元素序列中的某元素…