当前位置: 首页 > news >正文

Python技术栈 —— 语言基础

Python基础

  • 语法拾遗
      • List与Tuple的区别
      • yield关键字
      • for in enumerate
      • for in zip
  • 精彩片段
      • 测量程序用时

语法拾遗

List与Tuple的区别

ListTuple
建立后是否可变可变不可变
建立后是否可添加元素可添加不可添加
# list and tuple
List = [1, 2, 3, 4, 5]
Tuple = (1, 2, 3, 4, 5)
print(List)
print(Tuple)def change_element():"""# diff1list中元素,建立后可改变tuple中元素,建立后不可改变"""print("【1.change element】")List[0] = 0# Tuple[0] = 0 # errorprint(List)print(Tuple)def add_element():"""# diff2list可添加元素tuple不可添加元素"""print("【2.add element】")List.append(6)print(List)print(Tuple)def resize():l2 = List + Listt2 = Tuple + Tupleprint(l2)print(t2)def nest():List[0] = [6, 8, 10]# Tuple[0] = (6,8,10) # errorprint(List)tuple = (1, 2, 3, 4, (5, 6, 7, 8))print(tuple)def in_and_notin():print("1 in", List, "is", 1 in List)print("1 in", Tuple, "is", 1 in Tuple)print("100 not in", List, "is", 100 not in List)print("100 not in", Tuple, "is", 100 not in Tuple)passdef is_and_equal():"""is, is not 比较的是两个变量的内存地址== 比较的是两个变量的值:return:"""x = "hello"y = "hello"print(x is y, x == y)  # True,Trueprint(x is not y, x != y)  # False,Falsea = ["hello"]b = ["hello"]print(a is b, a == b)  # False Trueprint(a is not b, a != b)  # True Falsec = ("hello")d = ("hello")print(c is d, c == d)  # True,Trueprint(c is not d, c != d)  # False,Falsedef complement_code(x):"""求一个数的补码https://tianchi.aliyun.com/notebook/169961方法来源,阿里天池:param x::return:"""if x >= 0:return bin(x)else:return bin(x & 0xffffffff)if __name__ == "__main__":# change_element()# add_element()# resize()# nest()# in_and_notin()# is_and_equal()# print(complement_code(-3))

yield关键字

《Python中yield的使用》—— 设计学院:这篇文章说使代码逻辑更加清晰,易于理解和维护,可yield的缺点就是不好阅读和理解,不是西方人写的所有东西都是好的。
Python Yield - NBShare

def my_generator():yield 1yield 2yield 3g = my_generator()
print(next(g))  # 输出:1
print(next(g))  # 输出:2
print(next(g))  # 输出:3###############################
def my_generator():yield 1yield 2yield 3if __name__ == '__main__':for i in my_generator():print(i)
# 输出:
# 1
# 2
# 3
###############################
#惰性计算指的是在需要的时候才计算数据,而不是一次性计算所有的数据。通过yield,我们可以将计算分成多个阶段,每次只计算一部分数据,从而减少了计算的时间和内存消耗。
def fib():a, b = 0, 1while True:yield aa, b = b, a + bf = fib()
print(next(f))  # 输出:0
print(next(f))  # 输出:1
print(next(f))  # 输出:1
print(next(f))  # 输出:2
###############################
#协程是一种在单线程中实现多任务的技术,可以实现任务之间的切换和并发执行。
#yield可以用来实现协程,通过yield可以在函数执行过程中暂停,并切换到其他任务。这种方式可以大幅度提高程序的并发性和响应性。
#通过yield语句实现了程序的暂停和切换。使用send()方法可以向协程中传递数据,并在需要的时候继续执行程序。
def coroutine():while True:value = yieldprint(value)c = coroutine()
next(c)
c.send("Hello")  # 输出:Hello
c.send("World")  # 输出:World

我是这么理解的,yield相当于把断点调试写成了一个语法特性,每调用一次这个关键字生成的generator就生成下一个结果。我发现,国内网站UI颜值普遍低,还是说国内的技术栈,像我海军某少校参观俄罗斯舰艇所感一样,“感受到了厚重的历史”。

for in enumerate

《用法介绍for in enumerate》—— 设计学院

######## 1.基本用法
animals = ['cat', 'dog', 'fish']
for idx, animal in enumerate(animals):print('Index:', idx, 'Animal:', animal)# Index: 0 Animal: cat
# Index: 1 Animal: dog
# Index: 2 Animal: fish######## 2.指定遍历的起始索引值
fruits = ['apple', 'banana', 'melon']
for idx, fruit in enumerate(fruits, start=1):print('Index:', idx, 'Fruit:', fruit)# Index: 1 Fruit: apple
# Index: 2 Fruit: banana
# Index: 3 Fruit: melon######## 3.使用for in enumerate遍历字典时,会输出字典中每个键值对的索引值和key,而非value。
fruits = {'apple': 1, 'banana': 2, 'melon': 3}
for idx, fruit in enumerate(fruits):print('Index:', idx, 'Fruit:', fruit)# Index: 0 Fruit: apple
# Index: 1 Fruit: banana
# Index: 2 Fruit: melon######## 4.遍历嵌套列表
neste_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for i, lst in enumerate(neste_list):for j, element in enumerate(lst):print('i:', i, 'j:', j, 'element:', element)# i: 0 j: 0 element: 1
# i: 0 j: 1 element: 2
# i: 0 j: 2 element: 3
# i: 1 j: 0 element: 4
# i: 1 j: 1 element: 5
# i: 1 j: 2 element: 6
# i: 2 j: 0 element: 7
# i: 2 j: 1 element: 8
# i: 2 j: 2 element: 9######## 5.K-折交叉验证遍历
fold = KFold(5,shuffle=False) 
y_train_data = pd.DataFrame([11,12,13,14,15, 16,17,18,19,20])
print(type(fold.split(y_train_data))) # generator, the yield feature are used in this function,用到了yield关键字.
print(fold.split(y_train_data))
# for iteration, indices in enumerate(fold.split(y_train_data), start = 0): # Try it
for iteration, indices in enumerate(fold.split(y_train_data), start = 1): # fold.split(): Generate 'indices' to split data into training and test set.print('iteration = ',iteration)print(indices[0])print(indices[1])# <class 'generator'>
# <generator object _BaseKFold.split at 0x7f31ba7479e8>
# iteration =  1
# [2 3 4 5 6 7 8 9]
# [0 1]
# iteration =  2
# [0 1 4 5 6 7 8 9]
# [2 3]
# iteration =  3
# [0 1 2 3 6 7 8 9]
# [4 5]
# iteration =  4
# [0 1 2 3 4 5 8 9]
# [6 7]
# iteration =  5
# [0 1 2 3 4 5 6 7]
# [8 9]

for in zip

《用法介绍for in zip》—— 设计学院

######## 1.基本用法
iter1 = [1, 2, 3]
iter2 = ['a', 'b', 'c']result = zip(iter1, iter2)
print(type(result))
for x, y in result:print(x, y)  
# 输出结果:
# <class 'zip'>
# 1 a  
# 2 b  
# 3 c######## 2.合并列表并输出
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']result = list(zip(list1, list2))
print(result)  # 输出结果:[(1, 'a'), (2, 'b'), (3, 'c')]######## 3.并行处理
import multiprocessingdef process_data(data):# 处理数据的函数print(type(data))print(data,end='')return 'THE RESULT'input_data1 = [1, 2, 3, 4, 5]
input_data2 = ['a', 'b', 'c', 'd', 'e']
pool = multiprocessing.Pool()# 这里的map(func, param),就是将param(可迭代即可)中的每个值,传入func进行并行计算,然后map函数本身的返回值,就是分别计算的结果,以list为形式返回。
ret_list = pool.map(process_data, zip(input_data1, input_data2)) # Apply `func` to each element in `iterable`, collecting the results in a list that is returned.
print(ret_list)# 由于是并行的,可能连续输出,换行不一定是规整的,这似乎证明了一件事,那就是print输出并非原子操作,中间是可以被插入其它运算的
#<class 'tuple'><class 'tuple'><class 'tuple'><class 'tuple'><class 'tuple'>
#(4, 'd')(1, 'a')
#(5, 'e')(3, 'c')(2, 'b')['THE RESULT', 'THE RESULT', 'THE RESULT', 'THE RESULT', 'THE RESULT']######## 4.将两个列表转换成字典
keys = ['a', 'b', 'c']
values = [1, 2, 3]result = dict(zip(keys, values))
print(result)  # 输出结果:{'a': 1, 'b': 2, 'c': 3}

精彩片段

测量程序用时

import time
start = time.time()
# Your python code
end = time.time()
print('The time for the code executed:', end - start)

相关文章:

Python技术栈 —— 语言基础

Python基础 语法拾遗List与Tuple的区别yield关键字for in enumeratefor in zip 精彩片段测量程序用时 语法拾遗 List与Tuple的区别 ListTuple建立后是否可变可变不可变建立后是否可添加元素可添加不可添加 # list and tuple List [1, 2, 3, 4, 5] Tuple (1, 2, 3, 4, 5) p…...

redis cluster搭建

k8s部署 Redis Insight k8s部署redis集群_mob6454cc6c6291的技术博客_51CTO博客 占用的内存竟然这么小&#xff0c;才200M左右 随便选个节点进去&#xff0c;看能否连接上其他节点 redis-cli -h redis-cluster-v1-0.redis-cluster.project-gulimall.svc.cluster.local 再创建个…...

windows 11 本地运行ER-NeRF及pytorch3D安装

ER-NeRF本地运行只要梳理好依赖版本&#xff0c;运行起来就很顺畅 conda create -n ernerf python3.10 创建本项目虚拟环境conda install pytorch1.12.1 torchvision0.13.1 cudatoolkit11.3 -c pytorch 若windows有多个版本的cuda&#xff0c;需要在环境变量中切换至cuda 11.3&…...

mysql客户端navicat的一些错误合集

关于mysql的客户端的使用的一些问题 问题描述&#xff1a; 在使用navicat prenium客户端的时候&#xff0c;连接数据库出现 Table ‘performance_schema.session_variables’ doesn’t exist 错误 解决方案&#xff1a; 首先找到mysql的bin目录 然后winR 进入到cmd界面 输入…...

【力扣面试经典150题】(链表)K 个一组翻转链表

题目描述 力扣原文链接 给你链表的头节点 head &#xff0c;每 k 个节点一组进行翻转&#xff0c;请你返回修改后的链表。 k 是一个正整数&#xff0c;它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍&#xff0c;那么请将最后剩余的节点保持原有顺序。 你不能只…...

数据结构刷题

空间复杂度&#xff1a;临时开辟的空间、空间是可以重复利用的 递归为O(n) 时间复杂度&#xff1a;程序执行次数 消失的数字 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 思路1&#xff1a;利用连续的特点求等差和然后减去所有元素得到的就是消…...

【Android】设置全局标题栏

序言 在做项目的时候&#xff0c;有时候需要一个全局统一的标题栏&#xff0c;保证项目风格的统一&#xff0c;但是如果在每个activity上面都写一遍这个标题栏就很麻烦了&#xff0c;我们经常用的方法就是写个基类Activity&#xff0c;然后当某个Activity需要这个统一的标题栏…...

R语言的入门学习

目录 准备工作导入csv数据集选择前200行作为数据集展示数据集的前/后几N行宏观分析删除缺失值构建直方图导出为图片 R语言常见图像类型例1&#xff1a;散点图例2&#xff1a;散点矩阵图 准备工作 安装教程&#xff1a; R语言和RStudio的下载安装&#xff08;非常简便舒适&…...

【开源】基于Vue和SpringBoot的民宿预定管理系统

项目编号&#xff1a; S 058 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S058&#xff0c;文末获取源码。} 项目编号&#xff1a;S058&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用例设计2.2 功能设计2.2.1 租客角色…...

nacos集群部署

GitHub - nacos-group/nacos-k8s: This project contains a Nacos Docker image meant to facilitate the deployment of Nacos on Kubernetes using StatefulSets. 需要修改两个文件 --- apiVersion: v1 kind: Service metadata:name: nacos-headlessnamespace: project-guli…...

9、传统计算机视觉 —— 边缘检测

本节介绍一种利用传统计算机视觉方法来实现图片边缘检测的方法。 什么是边缘检测? 边缘检测是通过一些算法来识别图像中物体之间,或者物体与背景之间的边界,也就是边缘。 边缘通常是图像中灰度变化显著的地方,标志着不同区域的分界线。 在一张图像中,边缘可以是物体的…...

Linux tc 使用

tc模拟延时丢包等网络故障依赖的内核驱动 /lib/modules/5.15.0-52-generic/kernel/net/sched/sch_netem.ko有些系统并不是默认就安装上该驱动的&#xff0c;如果没有安装该驱动&#xff0c;构造网络故障时会报错。 root:curtis# tc qdisc change dev enp4s0 root netem delay…...

从0开始学习JavaScript--JavaScript 数字与日期

JavaScript中的数字和日期是处理数值计算和时间相关任务的核心。本文将深入研究JavaScript中数字的表示、常见运算&#xff0c;以及日期对象的创建、格式化等操作&#xff0c;并通过丰富的示例代码&#xff0c;可以更全面地了解和应用这些概念。 JavaScript数字基础 JavaScri…...

从关键新闻和最新技术看AI行业发展(2023.11.6-11.19第十期) |【WeThinkIn老实人报】

Rocky Ding 公众号&#xff1a;WeThinkIn 写在前面 【WeThinkIn老实人报】旨在整理&挖掘AI行业的关键新闻和最新技术&#xff0c;同时Rocky会对这些关键信息进行解读&#xff0c;力求让读者们能从容跟随AI科技潮流。也欢迎大家提出宝贵的优化建议&#xff0c;一起交流学习&…...

计算机硬件的基本组成

一、冯诺依曼结构 存储程序&#xff1a; “存储程序”的概念是指将指令以二进制代码的形式事先输入计算机的主存储器&#xff0c;然后按其在存储器中的首地址执行程序的第一条指令&#xff0c;以后就按该程序的规定顺序执行其他指令&#xff0c;直至程序执行结束。 冯诺依曼计…...

【算法-哈希表3】四数相加2 和 赎金信

今天&#xff0c;带来哈希表相关算法的讲解。文中不足错漏之处望请斧正&#xff01; 理论基础点这里 1. 四数相加2 分析题意 求符合条件的四元组的出现次数&#xff0c;条件&#xff1a; nums1nums2nums3nums4 从四个数组中的每一个数组取一个数 num1, num2, num3, num4&am…...

wpf devexpress自定义编辑器

打开前一个例子 步骤1-自定义FirstName和LastName编辑器字段 如果运行程序&#xff0c;会通知编辑器是空。对于例子&#xff0c;这两个未命名编辑器在第一个LayoutItem(Name)。和最终用户有一个访客左右编辑器查阅到First Name和Last Name字段&#xff0c;分别。如果你看到Go…...

文档向量化工具(一):Apache Tika介绍

Apache Tika是什么&#xff1f;能干什么&#xff1f; Apache Tika是一个内容分析工具包。 该工具包可以从一千多种不同的文件类型&#xff08;如PPT、XLS和PDF&#xff09;中检测并提取元数据和文本。 所有这些文件类型都可以通过同一个接口进行解析&#xff0c;这使得Tika在…...

学习c#的第二十一天

目录 C# 泛型&#xff08;Generic&#xff09; 泛型类型参数 类型参数的约束 约束多个参数 未绑定的类型参数 类型参数作为约束 notnull 约束 class 约束 default 约束 非托管约束 委托约束 枚举约束 类型参数实现声明的接口 泛型类 泛型方法 泛型和数组 泛型…...

Michael Jordan最新报告:去中心化机器学习中的契约、不确定性和激励

‍ ‍导读 11月3日&#xff0c;智源研究院学术顾问委员会委员、机器学习泰斗Michael Jordan在以“新一代人工智能前沿”为主题的2023北京论坛 新工科专题论坛上&#xff0c;发表了题为Contracts, Uncertainty, and Incentives in Decentralized Machine Learning&#xff08;去…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)

目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 &#xff08;1&#xff09;输入单引号 &#xff08;2&#xff09;万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...

智能职业发展系统:AI驱动的职业规划平台技术解析

智能职业发展系统&#xff1a;AI驱动的职业规划平台技术解析 引言&#xff1a;数字时代的职业革命 在当今瞬息万变的就业市场中&#xff0c;传统的职业规划方法已无法满足个人和企业的需求。据统计&#xff0c;全球每年有超过2亿人面临职业转型困境&#xff0c;而企业也因此遭…...

WEB3全栈开发——面试专业技能点P4数据库

一、mysql2 原生驱动及其连接机制 概念介绍 mysql2 是 Node.js 环境中广泛使用的 MySQL 客户端库&#xff0c;基于 mysql 库改进而来&#xff0c;具有更好的性能、Promise 支持、流式查询、二进制数据处理能力等。 主要特点&#xff1a; 支持 Promise / async-await&#xf…...

标注工具核心架构分析——主窗口的图像显示

&#x1f3d7;️ 标注工具核心架构分析 &#x1f4cb; 系统概述 主要有两个核心类&#xff0c;采用经典的 Scene-View 架构模式&#xff1a; &#x1f3af; 核心类结构 1. AnnotationScene (QGraphicsScene子类) 主要负责标注场景的管理和交互 &#x1f527; 关键函数&…...

使用ch340继电器完成随机断电测试

前言 如图所示是市面上常见的OTA压测继电器&#xff0c;通过ch340串口模块完成对继电器的分路控制&#xff0c;这里我编写了一个脚本方便对4路继电器的控制&#xff0c;可以设置开启时间&#xff0c;关闭时间&#xff0c;复位等功能 软件界面 在设备管理器查看串口号后&…...

break 语句和 continue 语句

break语句和continue语句都具有跳转作用&#xff0c;可以让代码不按既有的顺序执行 break break语句用于跳出代码块或循环 1 2 3 4 5 6 for (var i 0; i < 5; i) { if (i 3){ break; } console.log(i); } continue continue语句用于立即终…...

【Linux】使用1Panel 面板让服务器定时自动执行任务

服务器就是一台24小时开机的主机&#xff0c;相比自己家中不定时开关机的主机更适合完成定时任务&#xff0c;例如下载资源、备份上传&#xff0c;或者登录某个网站执行一些操作&#xff0c;只需要编写 脚本&#xff0c;然后让服务器定时来执行这个脚本就可以。 有很多方法实现…...