你所不知道的Python的精髓

一文读懂AI大模型时代的RAG技术 RAG(Retrieval-Augmented Generation,检索增强生成) 是一种结合检索技术与生成模型的技术架构,旨在通过动态引入外部知识库增强大语言模型(LLM)的生成能力。其核心思想是通过检索系统从外部数据源(如企业知识库、实时文档等)获取相关信息,并将检索结果作为上下文输入生成模型,以提高生成答案的准确性、时效性和专业性 阅读详情

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

python免费学习资料以及群交流解答点击即可加入


和其他编程语言相比,什么才是Python独一无二的特色呢?很多程序员会说,缩进。的确,缩进是Python语言的标志性特点,但这只是外在的、形式上的。从语言特性层面讲,Python的特点是什么呢?我尝试着在知乎上搜索了一下,最具代表性的答案分别是语法简洁、简单易学、代码高效、功能强大等四项。仔细品味这四项,我还是觉得,这是Python语言表现出来的使用效果或用户感受,仍然不是语言特性层面的特色。

  • 换个说法,究竟是Python的哪些语言特性使得人们普遍认为Python具有语法简洁、简单易学、代码高效、功能强大的特点呢?我个人认为,这要归功于列表(list)、字典(dict)、元组(tuple)和集合(set)这“四大金刚”。尽管整型(int)、浮点型(float)和字符串(str)也很重要,但这三种对象相对于其他编程语言来说,差异并不像“四大金刚”那样明显。可以毫不夸张地说,列表、字典、元组和集合代表了Python语言的核心和基础,同时也是Python的精髓所在。学会使用列表、字典、元组和集合,就意味着掌握了Python这门编程语言。
  • 如果认可这个观点,那么,Python的精髓就从列表、字典、元组和集合等“四大金刚”,演变成由方括号、花括号和圆括号组成的“括号族”。

1. 方括号

方括号几乎是所有编程语言的第一符号。这里的第一,并不是指使用频率,而是指这个符号展现出的编程语言的内涵和创造力。事实上,就符号的使用频率而言,方括号也可能排在首位——只是我的直觉,并没有统计数据支持。

1.1 创建列表

对于初学者来说,创建列表最常用的方法就是用一对方括号。

 

 

即便是老鸟,也会大量使用方括号创建列表,尤其是使用推导式创建列表的情况下。

 


但我一直觉得,方括号就像口语或俚语,太过随便。我更喜欢使用严谨的list()来创建列表。使用list()创建列表,是list类的实例化的标准方法,可以体会list类的构造函数如何适应不同类型的参数。

1.2 列表的索引

方括号可以创建列表,但方括号并不等同于列表,因为方括号还用来索引。

 

 

列表的索引非常灵活,尤其是引入了负数索引,用-1表示最后一个元素或逆序,实属喜大普奔。上面的操作,属于常用索引方式,如果能读懂下面的代码,说明你已经具备了足够深的功力。

 

1.3 列表的方法

对于列表对象的方法如果能信手拈来,那就是Python高手了。

 

2. 花括号

花括号代表字典对象,大多数初学者都这样认为。然而,这是错误的,至少是片面的。下面的代码中,a和b都是用花括号创造出来的对象,却一个是字典,一个是集合。

 

 

原来,Python用花括号表示字典和集合两种对象:花括号内是空的,或者是键值对的,表示字典;花括号内是无重复元素的,表示集合。为了不引起误会,我习惯用dict()来生成字典,用set()来生成集合。

 


编码实践中,虽然在某些情况下集合是无可替代的,但集合的使用频率是“四大金刚”中最低的,我们这里不展开讨论,只说说字典的使用技巧。

2.1 判断一个键是否存在于字典中

Py2时代,dict对象曾经有has_key()的方法,用来判断是否包含某个键。py3舍弃了这个方法,判断一个键是否存在于字典中,只能使用in这样的方法了。

 

2.2 向字典中添加一个新键或更新键值

很多人喜欢用对字典的一个键赋值的方法,实现向字典中添加一个新键或更新键值。

 

 

我不推荐这样的方式,使用update()才更有仪式感,还可以一次添加或修改多个键。

 

2.3 从字典中获取一个键值

a['age']是最常用的方式,但是也还会遇到键不存在的异常。下面的方法值得推荐。

>>> a.get('age', 18)
18

2.4 获取字典的全部键、全部值、全部键值对

dict类提供了keys()、values()和items()等三个方法分别返回字典的全部键、全部值和全部键值对。需要注意的是,返回结果并非列表,而是迭代器。如果你需要列表形式的返回结果,请使用list()转换。

 

2.5 遍历字典

遍历字典的时候,很多同学或写成遍历字典的keys()。其实,不需要这么麻烦,可以像下面这样直接遍历。

 

3. 圆括号

圆括号代表元组对象,这么说应该没有问题吧?的确,听起来没有问题,但在元组的使用上,我相信每个初学者都会跌进同一个深坑至少一次。

3.1 必入之浅坑

元组不用于列表的最显著的特点,就是无法更新元素的值。忘记或者忽略这一点,就会入坑。

 

3.2 必入之深坑

使用了多年Python之后,我曾经写出的最糟糕的bug,就是下面这一段代码。

>>> import threading
>>> def do_something(name):
        print('My name is %s.'%name)

>>> th = threading.Thread(target=do_something, args=('xufive'))
>>> th.start()
Exception in thread Thread-1:
Traceback (most recent call last):
  File "C:\Users\xufive\AppData\Local\Programs\Python\Python37\lib\threading.py", line 926, in _bootstrap_inner
    self.run()
  File "C:\Users\xufive\AppData\Local\Programs\Python\Python37\lib\threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
TypeError: do_something() takes 1 positional argument but 6 were given

我分明只提供了1个参数,却提示说给出了6个参数,为什么呢?原来,元组初始化时,如果只有单个参数,则必须在单个参数之后增加一个逗号(,),否则,初始化结果仅返回原参数。

>>> a = (5)
>>> a
5
>>> type(a)
<class 'int'>
>>> b = ('xyz')
>>> b
'xyz'
>>> type(b)
<class 'str'>
>>> a, b = (5,), ('xyz',)
>>> a, b
((5,), ('xyz',))
>>> type(a), type(b)
(<class 'tuple'>, <class 'tuple'>)

3.3 单星号解包元组

格式化输出字符串时,C语言风格是我的最爱。当有多个%需要匹配时,下面也许是最自然而然的写法。

>>> args = (95,99,100)
>>> '%s:语文%d分,数学%d分,英语%d分'%('天元浪子', args[0], args[1], args[2])
'天元浪子:语文95分,数学99分,英语100分'

正确固然正确,但不够精彩。满分写法应该是这样的。

>>> args = (95,99,100)
>>> '%s:语文%d分,数学%d分,英语%d分'%('天元浪子', *args)
'天元浪子:语文95分,数学99分,英语100分'

3.4 为什么要使用元组?

既然元组的元素不可改变,那为什么还要使用元组呢?使用列表代替元组不是更方便吗?诚然,在多数情况下,可以使用列表代替元组,但下面的例子却可以证明,列表无法代替元组。

>>> s = {1,'x',(3,4,5)}
>>> s
{1, (3, 4, 5), 'x'}
>>> s = {1,'x',[3,4,5]}
Traceback (most recent call last):
  File "<pyshell#32>", line 1, in <module>
    s = {1,'x',[3,4,5]}
TypeError: unhashable type: 'list'

我们可以将元组加到集合中,但列表不行,因为列表是不可哈希(unhashable)的。理解这一点并不困难:列表元素可以被动态改变,所以没有一个固定不变的哈希值——这与集合要求的元素唯一性冲突;而元组的元素被禁止更新,其哈希值在整个生命周期都不会变化,因此可以成为集合的元素。
显然,元组和列表有着完全不同的存储方式。因为不用考虑更新问题,元组的速度性能要远优于列表。优先使用元组,应该成为Python程序员遵循的一条基本原则。

Kylin-Desktop-V10-SP1-General-Release-2303-X86_64-海光版(hygon c86)安装与配置指南 本文提供了在国产海光C86处理器平台上安装与配置Kylin Desktop V10 SP1操作系统的详细指南。内容涵盖从下载专用镜像、制作启动盘、BIOS关键设置、磁盘分区方案,到系统安装后的驱动优化、必备软件安装及常见故障排除,旨在帮助用户顺利完成hygon c86平台的系统部署与优化。 阅读详情

相关推荐

电机驱动技术中关于磁阻转矩生成的理解

正交在物理学和数学中指的是两个方向或两个向量之间的夹角为90°(直角)。在图中,当气隙磁场的轴线与转子轴线的夹角为90°时,我们称它们为正交。转子磁极的方向。通常由转子的磁极中心指向另一极的连线表示。转子轴线用图示中的d 轴表示。通过对定子、转子、气隙磁场、磁力线的理解,我们可以清晰地分析不同角度下电磁转矩的方向。这种分析不仅有助于电机的理论学习,还能为实际设计提供重要参考。掌握这些基础知识后,可以更好地理解电机工作原理及优化其性能。

weixin_48327795的博客 2074

python中几种括号的用法()、[]、{} 举例说明

在Python语言中最常见的括号有三种,分别是:小括号()、中括号[]、花括号{};其作用也不相同,分别用来代表不同的Python基本内置数据类型。因博主是java出身,所以会举一些Java的类比。python不像java需要在定义的时候强制定义类型,所以括号就是几种基本数据类型。 Python中的小括号():tuple 代表tuple元组数据类型,元祖是一种不可变序列。创建方法很简单,大多数时候都是小括号括起来的。这个类似java中的数组,定义后内容不可变 Python中的中括号[]:list

Alex的博客 15万+

从零打造高速 SerDes 系统:一步步教你生成 IBIS-AMI 模型!(含Simulink实操)

一个完整的 SerDes 系统,不止是电路设计,更是 SI 仿真、IBIS建模、系统验证三位一体的过程。用 MATLAB 的 SerDes Designer + Simulink 组合拳,不仅可以快速完成设计,还能无缝衔接工业标准流程,非常适合个人学习 & 企业验证。如果你还没用过,建议马上动手试一遍,毕竟:“光说不练假把式,跑出眼图才是王道!”🔥。

weixin_43199439的博客 1147

python变量的两个花括号_Python3中小括号()、中括号[]、花括号{}的区别详解

介绍在Python语言中最常见的括号有三种,分别是:小括号()、中括号[]、花括号{};其作用也不相同,分别用来代表不同的Python基本内置数据类型。小括号()Python中的小括号():代表tuple元祖数据类型,元祖是一种不可变序列。示例>>> a = (12,23)>>> a(12, 23)>>> () #空元祖()>>&...

weixin_35949256的博客 2639

vue2/3 - 详细实现高德地图轨迹回放,vue高德地图车辆历史行驶轨迹播放,在地图上绘制行程轨迹|起点和终端的路程绘制|用户运动轨迹绘制及播放等(支持开始/暂停、进度条拖放、控制播放轨迹的倍速等)

vue2,vue3,nuxt,高德地图,轨迹,vue高德地图轨迹回放,历史轨迹回放,轨迹回放功能支持倍速及进度条拖拽,VUE高德地图轨迹回放、倍速调整、进度条拖拽,vue3高德地图轨迹回放,Vue实现地图路径回放,vue中使用高德地图实现历史轨迹回放并能控制播放轨迹的倍速,多条轨迹陆续播放,巡航轨迹做带进度条和倍速的轨迹回放,Vue高德地图路径回放,历史轨迹回放并能控制播放轨迹的倍速,使用高德地图实现轨迹播放和进度条控制,vue高德地图如何实现轨迹回放,高德地图做轨迹绘制用什么api,高德轨迹API,驾车轨

✅ 精选推荐文章 1万+

Ansible 面板工具之AWK ( Anssible Tower )界面介绍

整理这部分笔记博文内容为AWX和UI 界面的简单介绍理解不足小伙伴帮忙指正傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心里寂寞而凄凉,感到自己的生命被剥夺了。当时我是个年轻人,但我害怕这样生活下去,衰老下去。在我看来,这是比死亡更可怕的事。--------王小波这里AWX使用的是最新的版本AWX 21.7.0目前最新版是3.8.6,博客中的版本为3.5.0对于Redhat的,官网上看到在 2022 年 11 月之后不在维护了,改版之后现在叫,感兴趣小伙伴可以了解下虽然有AWX是。

山河已无恙 1305

python零基础到实战基础篇_零基础掌握:Python基础篇

一、 数据类型1、字符串:2、数字:3、容器:1)列表(list)2)元祖(Tuple):与列表类似,但元祖元素不能修改,元祖用来查询,用的较少使用小括号(),括号中添加元素,逗号隔离开即可3)集合(Sets):是一个没有重复元素的容器,用花括号{},花括号中添加元素,逗号隔开即可4)字典:存储映射关系的容器,用花括号;字典中K的值是唯一的,键是不变的,可以用数值、字符串和元组来充当。4、布尔:条...

weixin_26820341的博客 385

Midscene.js(1):Chrome 插件实战之基于 AI 驱动 WEB UI 自动化测试「喂饭教程」

Midscene.js 是一款开源的AI驱动UI自动化工具,支持自然语言交互、数据提取、断言验证等多种功能。自然语言交互。本文将以 Midscene.js Chrome 插件为例,带你从零上手,体验如何用最简单的方式实现高效、智能的UI自动化测试。

blues_C的博客 4404

python什么时候用花括号_python快速入门

官网使用操作文档:https://docs.python.org/2/tutorial/datastructures.html#more-on-lists一.python的四个关键点什么是变量?变量用于存放数据的,格式规则:变量名=变量值(变量值即数据类型)如:nameStr='马云'变量名的命名规则:变量名不能以数字开头。变量大小写敏感,区分大小写1.数据常用数据类型:1.1字符串定义字符串,将...

weixin_42451196的博客 1054

CRC_16---ModBus 计算方法及代码实现

1、 CRC寄存器初始值为 0xFFFF;即16个字节全为1; 2、 CRC-16 / ModBus的多项式0xA001H (1010 0000 0000 0001B) ; ‘H’表示16进制数,‘B’表示二进制数。 计算步骤为: (1).预置 16 位寄存器为十六进制 0xFFFF(即全为 1) ,称此寄存器为 CRC 寄存器; (2).把第一个 8 位数据与 16 位 CRC 寄存器的低位相异或,把结果放于 CRC 寄存器; (3).检测相异或后的CRC寄存器的最低位,若最低位为1,CRC寄存器

1万+

跨境电商产品信息抓取:使用Python爬虫进行市场分析

跨境电商平台是指为不同国家和地区的买卖双方提供在线交易服务的电子商务平台。亚马逊(Amazon):全球最大的电商平台之一,提供丰富的商品种类和全球配送服务。eBay:全球知名的在线拍卖和购物网站,支持个人和企业卖家。速卖通(AliExpress):阿里巴巴旗下的跨境电商平台,主要面向全球消费者提供中国制造的商品。Wish:以移动端为主的跨境电商平台,主打低价商品和个性化推荐。这些平台上的商品数据包括商品名称、价格、销量、用户评价、库存等信息,对于市场分析具有重要价值。

2201_76125261的博客 1235

Python基础知识⑨——元组

序列包括字符串、列表、元组 元组:既能像列表那样同时容纳多种类型的对象,也拥有字符串不可变的特性。 ①列表用方括号 [ ] ,而元组用的是圆括号 (),元组也可以不用括号,只要用逗号隔开就可以。 元组也可以通过下标来获取元素,元组是不可改的。 元组支持切片操作,切片的含义是将目标对象中的元素以某种特定的组合导出,而非修改对象本身。[: : -1]不是原地翻转,而是通过切片之后导出一个新的对象。 ②元组只有查(没有增删改的功能),只支持 count() 和 index() 方法。 ③加号(

ymrllj356266的博客 4264

无人驾驶Autoware导读

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对无人驾驶Autoware介绍做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。

qq_35635374的博客 2398

99%的人都不知道的Python智能运维黑科技:AI自愈系统设计精髓

掌握智能运维AI自愈Python新范式,解决系统故障响应滞后难题。结合机器学习与自动化脚本,实现服务器异常检测、根因分析与自动修复,适用于高可用架构运维。提升效率90%以上,降低人工干预成本,值得收藏。

simcode的专栏 945

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

python的精髓_你知道Python的精髓是什么吗?是方括号、花括号和圆括号

前言本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。Python爬虫、数据分析、网站开发等案例教程视频免费在线观看https://space.bilibili.com/523606542和其他编程语言相比,什么才是Python独一无二的特色呢?很多程序员会说,缩进。的确,缩进是Python语言的标志性特点,但这只是外在的、形式上的。从语言特性层面...

weixin_34299849的博客 239

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

python不知道吃什么_不知道吃什么怎么办?

一、什么是所谓的“不知道吃什么”?“不知道吃什么”是现代人十分常见的一类生活难题,它涵盖了“早上吃什么”、“中午吃什么”、“晚上吃什么”等极其深奥、刁钻的哲学问题。不管是牙牙学语的孩童、朝气蓬勃的青年、努力搬砖的社畜还是修身养性的中老年人,无不为此苦恼。二、“不知道吃什么”是由什么原因导致的?出现“不知道吃什么”问题的原因因人而异、五花八门。我查阅资料、调查身边亲友数位,排除了一些例如“没有钱”等...

weixin_33542801的博客 499

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

python爬虫--【百度知道】自动答题

做的第一个python爬虫类项目,刚开始学,如有错误,指出无妨 百度知道自动答题 功能 访问百度知道,我们会看到有很多新的提问。 其实很多提问已经有人做了解释或者网上可以找到现成的答案。 因此,一方面,满足那些提问题的人的需要,另一方面,自己使用python练练手。 项目的主要功能就是:对于百度知道里面的新问题,程序会在网页上去搜索,寻找最佳答案。如果有,则回答他;如果没有,那就跳过。 实...

一条二哈 6802

你知道Python的精髓是什么吗?是方括号、花括号和圆括号

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。 Python爬虫、数据分析、网站开发等案例教程视频免费在线观看 https://www.xin3721.com/eschool/pythonxin3721/ 和其他编程语言相比,什么才是Python独一无二的特色呢?很多程序员会说,缩进。的确,缩进是Python语言的标志性特点,但这只是外在的、形式上的。从语言特性层面讲,Python的特点是什么呢?我尝试着在知乎上搜索了一下,最具代表性的答案分别是语法简洁

chinaherolts2008的博客 173

我们都知道python,但我们不知道的是,python到底可以做什么呢?

先说个笑话,很多人一开始学习 Python 的时候,会感到无聊和枯燥,因为一开始都不知道那些循环语句呀、列表呀、元组等知识点的用武之地,所以慢慢的就没什么动力了,然后就去买滑板鞋,开始在地上摩擦,像魔鬼的步伐。逢人就说:“Python没用,这玩意不好找工作,就是拿来玩玩~” 最近有不少 b 友想知道 Python 除了爬虫之外,还能玩点啥呢?那么小帅b接下来就来说说我知道的可以使用 Python 做的事情,让你发现更多的方向。 1、爬虫 这玩意不用我多说了,我最近分享的大部分教程就是爬虫,如果你对爬虫感兴趣

m0_59162248的博客 4644

Python中的爬虫实战:百度知道爬虫

在这里,我们需要爬取的是每一个问题和对应的最佳答案。通过查看百度知道的源代码,我们可以发现每个最佳答案都有其独立的classID,我们可以根据这个选择对应的内容。我们学习了如何使用requests和urllib库发送请求,使用BeautifulSoup库解析网页,及如何保存爬取的结果到csv文件中。百度知道是提供了大量知识问答的网站,本文介绍在python中实现百度知道爬虫的方法。由于百度知道上的每一个问题URL的后缀都是不同的,因此我们需要通过字符串的格式化来自动生成需要爬取的网页地址。

wx_19970108018的博客 2434

【python】你知道可以做题的python网站有哪些吗?不知道还不赶快进来看看?

不知道小伙伴们,最近学习的累不累呢?小编我是真的累了(昨天晚上玩的太久了),哈哈哈哈哈。小伙伴们要坚持主哦,今天给大家分享几个可以练习python技术的网站,里面有一些可以答题,在提升你技术的同时巩固你的知识。不过要切记,学习也要适度哦,小心贪多嚼不烂~那么废话不多说,推荐 6 个!let’s go!

mate1357的博客 3940

Python的基础你一定还不知道有哪些吧!!

小编整理了一天,只要认真去看,就能要你对于Python有一定的了解基础,学习上也就能事功半倍,下面就是本章的内容大概,喜欢就一定要收藏起来呀。 Python 的种类 Python 的环境 Python 入门(解释器、编码、pyc文件、脚步传入参数、变量、输入、流程控制与缩进、while循环) 练习题 Python 的种类 Cpython   Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。 Jyht

yunyun云芸 7420

python的精髓_【用了几年才想明白:Python的精髓居然是、{}和()】

和其他编程语言相比,什么才是Python独一无二的特色呢?很多程序员会说,缩进。的确,缩进是Python语言的标志性特点,但这只是外在的、形式上的。从语言特性层面讲,Python的特点是什么呢?我尝试着在知乎上搜索了一下,最具代表性的答案分别是语法简洁、简单易学、代码高效、功能强大等四项。仔细品味这四项,我还是觉得,这是Python语言表现出来的使用效果或用户感受,仍然不是语言特性层面的特色。换个...

weixin_35697651的博客 121
上一篇: Python中神奇的迭代器和生成器
下一篇: 当我print时,Python做了什么
酸菜鱼编程
博客等级 码龄6年 155粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值