Python常用技能手册 - 基础语法

 系列

Python常用技能手册 - 基础语法

Python常用技能手册 - 模块module

Python常用技能手册 - 包package

目录

四大数据类型

整数 int

int() 转型

format() 进制互转

浮点数 float

float() 转型

字符串 str

str() str转型

布尔值 bool

四大数据结构

列表 list

创建、遍历、更新、删除

求长度、切片

计数、查询下标

元组 tuple

创建、不可修改

字典 dict

获取、添加/更新、删除

获取所有键值

判断键是否存在

集合 set

交集 &

并集 |

差集/补集 -

对称差集 ^

函数式编程

高阶函数

map() 映射

filter() 过滤

reduce() 缩减

嵌套函数

匿名函数

单个参数

多个参数

装饰器

无参数

有参数


四大数据类型

整数 int

表示整数值,例如:42, -10。

int() 转型

可以指定进制类型的。

print(int('100'))       # 默认就是 10进制
print(int('100', 2))    # 按照2进制读取,就是4
print(int('100', 8))    # 按照8进制读取,就是64
print(int('100', 9))    # 按照9进制读取,就是81
print(int('100', 10))   # 按照10进制读取,就是100

format() 进制互转

支持常见的进制转换。包括2、8、10、16进制。

举一个例子,

# 十进制转换为2进制、8进制、10进制、16进制
num = 255# 转换为二进制
binary = format(num, 'b')  # 输出: '11111111'
print(f"二进制: {binary}")# 转换为八进制
octal = format(num, 'o')  # 输出: '377'
print(f"八进制: {octal}")# 转换为十进制(实际上是重复了,因为num已经是十进制的)
decimal = format(num, 'd')  # 输出: '255'
print(f"十进制: {decimal}")# 转换为十六进制
hexadecimal = format(num, 'x')  # 输出: 'ff'
print(f"十六进制: {hexadecimal}")

再举个例子,

num = 100print("二进制", format(num, 'b'))
print("八进制", format(num, 'o'))
print("十进制", format(num, 'd'))
print("十六进制", format(num, 'x'))# 二进制 1100100
# 八进制 144
# 十进制 100
# 十六进制 64

浮点数 float

表示带有小数部分的数值,例如:3.14, -0.5。

float() 转型

num = 100
print(type(num), num)   # 原始数据num_float = float(num)  # int 转 float
print(type(num_float), num_float)

字符串 str

表示字符或文本序列,用引号(单引号或双引号)括起来,例如:“Hello, World!”。

str() str转型

num = 100
print(type(num), num)   # 原始数据num_str = str(num)  # int 转 str
print(type(num_str), num_str)num_int = int(num)  # str 转 int
print(type(num_int), num_int)

布尔值 bool

表示真(True)或假(False)的值。

四大数据结构

列表 list

又称一维数组。表示有序、可变的集合,可以包含不同类型的元素。

创建、遍历、更新、删除

创建一维数组

numbers = [1, 2, 3, 4, 5]

 创建二维数组,赋值0

matrix = [[0 for col in range(cols)] for row in range(rows)]

创建二维数组,空

matrix = [[] for row in range(rows)]

 遍历一维数组

first_number = numbers[0]  # 访问第一个元素
last_number = numbers[-1]  # 访问最后一个元素

 遍历二维数组

for row in range(rows):for col in range(cols):print(matrix[row][col])

更新一维数组

numbers[1] = 10  # 将索引为1的元素更新为10

更新二维数组

matrix[row][col] = value

添加元素 

numbers.append(6)  # 在数组末尾添加一个元素
numbers.insert(2, 7)  # 在索引为2的位置插入元素7

删除元素

del numbers[3]  # 删除索引为3的元素
numbers.remove(4)  # 删除值为4的第一个元素

求长度、切片

length = len(numbers)  # 获取数组的长度

一维数组切片

sliced_numbers = numbers[1:4]  # 获取索引1到3的元素切片

二维数组切片,取原矩阵的[2:5][2:5]

new_matrix = [row[2:5] for row in maxtrix[2:5]]

计数、查询下标

index()是在序列中检索参数并返回第一次出现的索引位置,Python下标默认从0计数。

A = [123, 'xyz', 'zara', 'abc']
print(A.index('xyz'))    # 输出1

元组 tuple

表示有序、不可变的集合,可以包含不同类型的元素。

创建、不可修改

元组中的元素值是不允许修改的,但我们可以对元组进行连接组合。

t = (1, 2, 3)
t = t + (4, 5, 6)
print(t)    # (1, 2, 3, 4, 5, 6)

字典 dict

表示无序、键值对的集合,用大括号括起来。

获取、添加/更新、删除

使用字典的键来获取对应的值,可以使用方括号或get()方法。

my_dict = {'name': 'Alice', 'age': 25, 'gender': 'female'}
print(my_dict['name'])  # 输出:Alice
print(my_dict.get('age'))  # 输出:25

使用字典的键来添加或修改对应的值,可以使用方括号或update()方法。 

my_dict = {'name': 'Alice', 'age': 25, 'gender': 'female'}
my_dict['email'] = 'alice@example.com'
my_dict.update({'age': 26, 'gender': 'unknown'})
print(my_dict)  # 输出:{'name': 'Alice', 'age': 26, 'gender': 'unknown', 'email': 'alice@example.com'}

 删除。使用del语句或pop()方法来删除字典中的键值对。

my_dict = {'name': 'Alice', 'age': 25, 'gender': 'female'}
del my_dict['age']
my_dict.pop('gender')
print(my_dict)  # 输出:{'name': 'Alice'}

获取所有键值

使用keys()方法获取所有键,使用values()方法获取所有值。

my_dict = {'name': 'Alice', 'age': 25, 'gender': 'female'}
print(my_dict.keys())  # 输出:dict_keys(['name', 'age', 'gender'])
print(my_dict.values())  # 输出:dict_values(['Alice', 25, 'female'])

判断键是否存在

使用in判断键是否存在于字典中。 

my_dict = {'name': 'Alice', 'age': 25, 'gender': 'female'}
print('name' in my_dict)  # 输出:True

集合 set

表示无序、唯一的元素集合,用大括号括起来。

交集 &

返回两个集合中都存在的元素。

set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
intersection = set1.intersection(set2)
print(intersection) # {4, 5}intersection = set1 & set2
print(intersection)  # {4, 5}

并集 |

返回两个集合中所有的元素,去重后组成的新集合。

set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
union = set1.union(set2)
print(union) # {1, 2, 3, 4, 5, 6, 7, 8}union = set1 | set2
print(union)  # {1, 2, 3, 4, 5, 6, 7, 8}

差集/补集 -

返回属于第一个集合但不属于第二个集合的元素。

set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
difference = set1.difference(set2)
print(difference) # {1, 2, 3}difference = set1 - set2
print(difference) # {1, 2, 3}

对称差集 ^

返回只属于一个集合而不属于另一个集合的元素。

set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
symmetric_difference = set1.symmetric_difference(set2)
print(symmetric_difference) # {1, 2, 3, 6, 7, 8}symmetric_difference = set1 ^ set2
print(symmetric_difference) # {1, 2, 3, 6, 7, 8}

函数式编程

在函数式编程中,函数是第一类对象,这意味着函数可以作为参数传递给其他函数,也可以作为返回值从一个函数返回。

即,函数也可以像常见的bool、int、str一样,作为一个参数进行传递。

高阶函数

map() 映射

将一个列表映射成另一个列表。

def square(x):return x ** 2nums = [1, 2, 3, 4, 5]
squared_nums = map(square, nums)
print(list(squared_nums))  # 输出:[1, 4, 9, 16, 25]

filter() 过滤

bool函数,将一个列表进行过滤,返回为True的值,生成新列表。

def is_even(x):return x % 2 == 0nums = [1, 2, 3, 4, 5]
even_nums = filter(is_even, nums)
print(list(even_nums))  # 输出:[2, 4]

reduce() 缩减

列表元素从左往右,逐个缩减,缩减方法为函数的操作方法。

from functools import reducedef add(x, y):return x + ynums = [1, 2, 3, 4, 5]
sum_nums = reduce(add, nums)
print(sum_nums)  # 输出:15

嵌套函数

嵌套函数是一种函数作为返回值的情况。

def my_sum(x):def my_add(y, z):return x + y * zreturn my_addf = my_sum(10)  # my_add(y, z)
print(f(5, 2))  # 输出 20

但嵌套函数不会立马计算值,只是保存了一个引用。

注意到返回的函数在其定义内部引用了局部变量args,所以,当一个函数返回了一个函数后,其内部的局部变量还被新函数引用。

def my_sum(x):result_f = []for x in range(3):def my_add(y, z):return x + y * zresult_f.append(my_add)return result_ff1, f2, f3 = my_sum(10)  # my_add(y, z)
print(f1(5, 2), f2(5, 2), f3(5, 2))  # 输出 12

匿名函数

单个参数

print(list(map(lambda x: x * x, [1, 2, 3])))
# 输出 [1, 4, 9]

多个参数

# 定义一个lambda函数,接受两个参数x和y,返回它们的和
add = lambda x, y: x + y# 调用lambda函数,将3和5作为参数传递
result = add(3, 5)
print(result)  # 输出:8

装饰器

Python装饰器是一种特殊类型的函数,它可以接受一个函数作为参数,并返回一个新的函数。装饰器可以在不修改原始函数代码的情况下,为函数添加额外的功能。

无参数

下面是一个简单的Python装饰器示例,不涉及一个参数:

def my_decorator(func):def wrapper():print("Something is happening before the function is called.")func()print("Something is happening after the function is called.")return wrapper@my_decorator
def say_hello():print("Hello!")# 调用装饰后的函数
say_hello()

有参数

下面实现一个在原始函数前后添加额外功能的装饰效果,用于计算函数的执行时间:

import timedef timer_decorator(func):def wrapper(*args, **kwargs):start_time = time.time()result = func(*args, **kwargs)end_time = time.time()print(f"Function {func.__name__} took {end_time - start_time} seconds to execute.")return resultreturn wrapper@timer_decorator
def compute_fibonacci(n):if n <= 1:return nelse:return compute_fibonacci(n-1) + compute_fibonacci(n-2)# 调用装饰后的函数并传入参数10,计算斐波那契数列的第10个数
result = compute_fibonacci(10)

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

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

相关文章

Vue学习计划-Vue3--初识Vue3,vite创建Vue3项目

1. Vue3简介 性能的提升 打包大小减少41%初次渲染快55%&#xff0c;更新渲染快133%内存减少54% 源码的升级 使用Proxy代替defineProperty实现响应式重写虚拟DOM的实现和Tree-Shaking 拥抱TypeScript Vue3可以更好的支持TypeScript 新的特性 Composition Api(组合Api) setupref…

【零基础入门VUE】在 Vue 中构建复杂表单

✍面向读者&#xff1a;所有人 ✍所属专栏&#xff1a;零基础入门VUE专栏https://blog.csdn.net/arthas777/category_12537076.html 目录 v-modelVue 中的 指令 Vue 中的组件 没有构建步骤 随着构建步骤 注册 VUE 组件 Vue 道具 VUE 中的道具声明 在 VUE 中传递 PROP…

CSP CCF 201409-2 画图 C++满分题解

解题思路&#xff1a; 1.使用二维数组标记每一个方块是否被涂色。 2.注意坐标代表的是点&#xff0c;不是方块&#xff0c;交界处的坐标只能算一个方块。 3.可以看成&#xff1a;每一个坐标都对应它左上角的一个小方块&#xff0c;这样可以避免重复计算方块数 #include<i…

Unity中URP下精度修饰符real

文章目录 前言一、real是什么&#xff1f;1、我们在项目的Packages下找到如下文件&#xff1a;2、HAS_HALF(1代表有half精度&#xff0c;0代表没有half精度)3、PREFER_HALF4、REAL_IS_HALF5、如果 real is half6、否则为float 二、总结 前言 在使用雾效时&#xff0c;ComputeFo…

你好,2024!

大家好&#xff0c;我是南城余&#xff01; 今天是2023年最后一天&#xff0c;看到各位大佬都在分享今年的总结&#xff0c;我也来做个年度总结&#xff0c;是第一次做年度总结&#xff0c;希望以后可以每年都做一个好好的回顾。 NO1. 再见&#xff0c;大学&#xff01; 1 2…

ThinkPad T14s Gen3,ThinkPad X13 Gen3(21BS,21BQ,21BR,21BN)原装出厂Win11系统

lenovo联想ThinkPad系列T14s/X13 Gen3笔记本电脑原装Windows11预装OEM系统镜像 链接&#xff1a;https://pan.baidu.com/s/1yhRMIjlkFvt86aLioOoNOA?pwdfrsp 提取码&#xff1a;frsp 原厂系统自带所有驱动、出厂主题壁纸、系统属性专属联机支持标志、Office办公软件、联想…

竞赛保研 基于机器视觉的12306验证码识别

文章目录 0 简介1 数据收集2 识别过程3 网络构建4 数据读取5 模型训练6 加入Dropout层7 数据增强8 迁移学习9 结果9 最后 0 简介 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于机器视觉的12306验证码识别 该项目较为新颖&#xff0c;适合作为竞赛课题方向…

08.Python文件与异常(文件的open、write、read、seek方法总结+文件备份与OS类方法+异常处理机制及自定义异常+代码示例)

⽂件操作 open&write open概述&#xff1a;是Python中用于打开文件的内置函数。通过一个文件路径作为参数&#xff0c;返回一个文件对象&#xff0c;用来读取、写入或操作文件。返回的文件对象需要定义变量进行接收&#xff0c;变量是否可进行写入追加等操作取决于 open …

rosdep init/update失败(转载)

sudo rosdep init rosdep update 如果你直接成功了&#xff0c;可直接跳过当我没说&#xff08;不过90%的几率你都会失败的啦&#xff09; 由于http://raw.githubusercontent.com这个网址墙的很厉害&#xff0c;大概率你是成功不了的&#xff0c;这里推荐一种本地化安装的方法…

【Leetcode】1154. 一年中的第几天

文章目录 题目思路代码 题目 1154. 一年中的第几天链接 思路 题目要求是给定一个字符串 date&#xff0c;它代表一个日期&#xff0c;采用标准的 YYYY-MM-DD 格式。需要计算这个日期是当年的第几天。 首先&#xff0c;我们可以通过字符串的索引来提取年、月和日的数值&…

二维动态规划问题,python解决最长回文子串

一个算法中的经典问题&#xff0c;求最长回文子串问题&#xff0c;其实是可以归于二维动态规划问题。 对于给定的一个字符串中&#xff0c;找到这个字符串中的回文子串&#xff0c;回文子串的概念是从前往后正向的读和从后往前反向的读都是完全相同的字符串。 对这个问题进行…

el-date-picker周选择器获取选择的日期范围

<el-date-pickerv-model"formData.date"type"week"format"yyyy 第 WW 周"placeholder"选择周"change"weekChange"> </el-date-picker>// 方法一&#xff1a;weekChange(val) {let startTime new Date(val.getT…

猪目标检测数据集VOC格式600张

猪是一种常见的哺乳动物&#xff0c;通常被人们认为是肉食动物&#xff0c;但实际上猪是杂食性动物&#xff0c;以植物性食物为主&#xff0c;也有偶尔食肉的习性。猪的体型较大&#xff0c;圆胖的体型和圆润的脸庞使其显得憨态可掬。它们主要通过嗅觉来感知周围环境&#xff0…

Windows操作系统简介

Windows操作系统简介 为什么要学习Windows操作系统呢&#xff0c;了解Windows系统结构&#xff0c;可以让我们快速学习Linux操作系统&#xff0c;通过对比学习的方法&#xff0c;我们可以更快的学会Linux。 计算机硬件组成包括&#xff1a; CPU、内存、网卡、硬盘、DVD光驱、…

RuntimeError: The NVIDIA driver on your system is too old.

【报错】使用 AutoDL 复现实验时遇到 RuntimeError: The NVIDIA driver on your system is too old (found version 11070). Please update your GPU driver by downloading and installing a new version from the URL: http://www.nvidia.com/Download/index.aspx Alternativ…

CentOS:docker同一容器间通信

docker同一容器中不同服务以别名访问 1、创建bridge网络 docker network create testnet 2、查看Docker网络 docker network ls 3、运行容器连接到testnet网络 使用方法&#xff1a;docker run -it --name <容器名> —network --network-alias <网络别名> <…

docker配置buildx插件

一、介绍 Docker buildx是docker的一个插件 支持Moby BuildKit的所有特性 可以跨CPU架构编译镜像 可以在多节点编译镜像 二、前提 使用 buildx 作为 docker CLI 插件需要使用 Docker 19.03 或更新版本。 三、配置步骤 1&#xff09;客户端&#xff1a;在客户端的配置文…

Vue3使用事件总线(Event Bus)实现发布订阅模式

Vue3使用事件总线&#xff08;Event Bus&#xff09;实现发布订阅模式 在Vue.js中&#xff0c;订阅发布模式&#xff08;也称为发布-订阅模式或Pub/Sub模式&#xff09;是一种设计模式&#xff0c;用于促进组件或对象之间的松散耦合。这种模式允许组件相互通信&#xff0c;而无…

python读取xlsx格式的excel

读取excel表格数据最好用的还是pandas库 首先是安装pandas pip install pandas 引入pandas import pandas as pd 读取excel&#xff0c;xlsx格式数据 # 读取xlsx格式的数据 def readexcel():df pd.read_excel("./test.xlsx",headerNone)df.columns df.iloc[4…

《PCI Express体系结构导读》随记 —— 第I篇 第1章 PCI总线的基本知识(17)

接前一篇文章&#xff1a;《PCI Express体系结构导读》随记 —— 第I篇 第1章 PCI总线的基本知识&#xff08;16&#xff09; 1.4 PCI总线的中断机制 PCI总线使用INTA#、INTB#、INTC#和INTD#信号向处理器发出中断请求。这些中断请求信号为低电平有效&#xff0c;并与处理器的中…