当前位置: 首页 > 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;去…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数&#xff0c;对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展&#xff0c;机器人仍难以胜任复杂的长时程任务&#xff08;如家具装配&#xff09;&#xff0c;主要受限于人…...