自学经典5个月的python学习历程,很多老司机都不知道的奥秘

2023-10-30

“人生苦短,我用Python”,下面分享pyhton的一些基础知识,学习中可以帮助快速入门

三元条件判断的3种实现方法

C语言中有三元条件表达式,如 a>b?a:b,Python中没有三目运算符(?:),但Python有它自己的方式来实现类似的功能。这里介绍3种方法:

true_part if condition else false_part

a,b=2,3

c=a if a>b else b

a,b=2,1

c=a if a>b else b

>>> print c

利用and-or条件判断的特性来实现三元条件判断

首先介绍一下,and和or的用法:

python 中的and从左到右计算表达式,若所有值均为真,则返回最后一个值,若存在假,返回第一个假值。

无论是列表,元组还是字符串,空表示False,非空表示True

>>> 'python' and [] and (2,3)

[]

>>> 'python' and [2,3] and (3,4)

(3, 4)

·1

·2

·3

·4

·5

or也是从左到右计算表达式,存在真,则返回第一个为真的值,若均为假,则返回最后一个值。

>>> 'python' or [3,4] or ()

'python'

>>> '' or [] or ()

然后,我们利用and-or条件判断的特性来实现三元条件判断:

a,b=2,1

c = (a>b and [a] or [b])[0]

>>> print c

2

·1

·2

使用列表

a,b=2,7

c = [b,a][a>b]

>>> print c

7

·1

·2

分析:若a>b为真,由于真用1表示,因此相当于c=[b,a][1],即c=a

若a>b为假,由于假用0表示,因此相当于c=[b,a][0],即c=b

>>> int(False)

0

>>> int(True)

字典(dict)

以下问题都是在用Python写KNN的时候遇到的:

dict_items()

python 字典(dict)的特点就是无序的,按照键(key)来提取相应值(value),如果我们需要字典按值排序的话,那可以用下面的方法来进行:

1 下面的是按照value的值从大到小的顺序来排序。

dic = {‘a’:31, ‘bc’:5, ‘c’:3, ‘asd’:4, ‘aa’:74, ‘d’:0}

dict= sorted(dic.items(), key=lambda d:d[1], reverse = True)

print(dict)

输出的结果:

[(‘aa’, 74), (‘a’, 31), (‘bc’, 5), (‘asd’, 4), (‘c’, 3), (‘d’, 0)]

下面我们分解下代码:

print dic.items() 得到[(键,值)]的列表。

然后用sorted方法,通过key这个参数,指定排序是按照value,也就是元素d[1]的值来排序。reverse = True表示是需要翻转的,默认是从小到大,翻转的话,那就是从大到小。

2 对字典按键(key)排序:

dic = {‘a’:31, ‘bc’:5, ‘c’:3, ‘asd’:4, ‘aa’:74, ‘d’:0}

dict= sorted(dic.items(), key=lambda d:d[0])

print(dict)

dict_get()

dic = {‘a’:31, ‘bc’:5, ‘c’:3, ‘asd’:4, ‘aa’:74, ‘d’:0}

dic.get(‘a’,1)

31

dic.get(‘d’,1)

0

dic.get(‘f’,1)

1

D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None.

如果k在字典中,返回D[k],即value值,否则返回d,d默认为None

自学经典5个月的python学习历程,很多老司机都不知道的奥秘

ImageNdarray互相转换

import numpy as np

from PIL import Image

img = Image.open(filepath)

img_convert_ndarray = np.array(img)

ndarray_convert_img= Image.fromarray(img_convert_ndarray )

# np.array(object) 这个函数很强大啊,看源码里面给的注释

# object : array_like

# An array, any object exposing the array interface, an object whose

# __array__ method returns an array, or any (nested) sequence.

Python统计列表中的重复项出现的次数的方法,是一个很实用的功能,适合Python初学者学习借鉴。具体方法如下:

对一个列表,比如[1,2,2,2,2,3,3,3,4,4,4,4],现在我们需要统计这个列表里的重复项,并且重复了几次也要统计出来。

方法1

[python] view plain copy

1.mylist = [1,2,2,2,2,3,3,3,4,4,4,4]

2.myset = set(mylist) #myset是另外一个列表,里面的内容是mylist里面的无重复项

3.for item in myset:

4.print("the %d has found %d" %(item,mylist.count(item)))

方法2:

[python] view plain copy

1.List=[1,2,2,2,2,3,3,3,4,4,4,4]

2.a = {}

3.for i in List:

4.if List.count(i)>1:

5. a[i] = List.count(i)

6.print (a)

利用字典的特性来实现。

方法3

[python] view plain copy

1.>>> from collections import Counter

2.>>> Counter([1,2,2,2,2,3,3,3,4,4,4,4])

3.Counter({1: 5, 2: 3, 3: 2})

这里再增补一个只用列表实现的方法:

[python] view plain copy

1.l=[1,4,2,4,2,2,5,2,6,3,3,6,3,6,6,3,3,3,7,8,9,8,7,0,7,1,2,4,7,8,9]

2.

3.count_times = []

4.for i in l :

5. count_times.append(l.count(i))

6.

7.m = max(count_times)

8.n = l.index(m)

9.

10. print (l[n])

其实现原理就是把列表中的每一个数出现的次数在其对应的位置记录下来,然后用max求出出现次数最多的位置。

只用这段代码的话,有一个缺点,如果有多个结果,最后的现实的结果只是出现在最左边的那一个,不过解决方法也很简单

自学经典5个月的python学习历程,很多老司机都不知道的奥秘

感兴趣的读者可以动手实践一下本文所述代码,还可以对不足之处加以改进,使之功能更加完善。下面分享一个python经典入门、自学的需要学习的知识。本书是一本Python入门书籍,适合对计算机了解不多,没有学过编程,但对编程感兴趣的读者学习使用。这本书以习题的方式引导读者一步一步学习编程,从简单的打印一直讲到完整项目的实现,让初学者从基础的编程技术入手,最终体验到软件开发的基本过程。

《Python编程从入门到精通》

本书循序渐进、由浅入深地详细讲解了Python 3语言开发的核心技术,并通过具体实例的实现过程演练了各个知识点的具体使用流程。通过两个综合实例的实现过程,介绍了Python 3语言在综合项目中的使用流程。全书内容循序渐进,以“技术解惑”和“范例演练”贯穿全书,引领读者全面掌握Python 3语言。

自学经典5个月的python学习历程,很多老司机都不知道的奥秘

好了,今天的知识就分享到这里,如果文章对你有有帮助,请收藏关注,在今后与你分享更多学习python的文章。同时欢迎在下面评论区留言如何学习python。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自学经典5个月的python学习历程,很多老司机都不知道的奥秘 的相关文章

  • 使用Python开发Web应用程序

    我一直在用 python 做一些工作 但这都是针对独立应用程序的 我很想知道 python 的任何分支是否支持 Web 开发 有人还会建议一个好的教程或网站吗 我可以从中学习一些使用 python 进行 Web 开发的基础知识 既然大家都说
  • Python、Tkinter、更改标签颜色

    有没有一种简单的方法来更改按钮中文本的颜色 I use button text input text here 更改按下后按钮文本的内容 是否存在类似的颜色变化 button color red Use the foreground设置按钮
  • 使用 openCV 对图像中的子图像进行通用检测

    免责声明 我是计算机视觉菜鸟 我看过很多关于如何在较大图像中查找特定子图像的堆栈溢出帖子 我的用例有点不同 因为我不希望它是具体的 而且我不确定如何做到这一点 如果可能的话 但我感觉应该如此 我有大量图像数据集 有时 其中一些图像是数据集的
  • 如何在android上的python kivy中关闭应用程序后使服务继续工作

    我希望我的服务在关闭应用程序后继续工作 但我做不到 我听说我应该使用startForeground 但如何在Python中做到这一点呢 应用程序代码 from kivy app import App from kivy uix floatl
  • 导入错误:没有名为 _ssl 的模块

    带 Python 2 7 的 Ubuntu Maverick 我不知道如何解决以下导入错误 gt gt gt import ssl Traceback most recent call last File
  • 如何打印没有类型的defaultdict变量?

    在下面的代码中 from collections import defaultdict confusion proba dict defaultdict float for i in xrange 10 confusion proba di
  • 如何在 Sublime Text 2 的 OSX 终端中显示构建结果

    我刚刚从 TextMate 切换到 Sublime Text 2 我非常喜欢它 让我困扰的一件事是默认的构建结果显示在 ST2 的底部 我的程序产生一些很长的结果 显示它的理想方式 如在 TM2 中 是并排查看它们 如何在 Mac 操作系统
  • 如何使用 Scrapy 从网站获取所有纯文本?

    我希望在 HTML 呈现后 可以从网站上看到所有文本 我正在使用 Scrapy 框架使用 Python 工作 和xpath body text 我能够获取它 但是带有 HTML 标签 而且我只想要文本 有什么解决办法吗 最简单的选择是ext
  • 打破嵌套循环[重复]

    这个问题在这里已经有答案了 有没有比抛出异常更简单的方法来打破嵌套循环 在Perl https en wikipedia org wiki Perl 您可以为每个循环指定标签 并且至少继续一个外循环 for x in range 10 fo
  • Spark的distinct()函数是否仅对每个分区中的不同元组进行洗牌

    据我了解 distinct 哈希分区 RDD 来识别唯一键 但它是否针对仅移动每个分区的不同元组进行了优化 想象一个具有以下分区的 RDD 1 2 2 1 4 2 2 1 3 3 5 4 5 5 5 在此 RDD 上的不同键上 所有重复键
  • Python tcl 未正确安装

    我刚刚为 python 安装了graphics py 但是当我尝试运行以下代码时 from graphics import def main win GraphWin My Circle 100 100 c Circle Point 50
  • 从 scikit-learn 导入 make_blobs [重复]

    这个问题在这里已经有答案了 我收到下一个警告 D Programming Python ML venv lib site packages sklearn utils deprecation py 77 DeprecationWarning
  • Python 中的二进制缓冲区

    在Python中你可以使用StringIO https docs python org library struct html用于字符数据的类似文件的缓冲区 内存映射文件 https docs python org library mmap
  • NameError:名称“urllib”未定义”

    CODE import networkx as net from urllib request import urlopen def read lj friends g name fetch the friend list from Liv
  • 在pyyaml中表示具有相同基类的不同类的实例

    我有一些单元测试集 希望将每个测试运行的结果存储为 YAML 文件以供进一步分析 YAML 格式的转储数据在几个方面满足我的需求 但测试属于不同的套装 结果有不同的父类 这是我所拥有的示例 gt gt gt rz shorthand for
  • Abaqus 将曲面转化为集合

    我一直试图在模型中找到两个表面的中心 参见照片 但未能成功 它们是元素表面 面 查询中没有选项可以查找元素表面的中心 只能查找元素集的中心 找到节点集的中心也很好 但是我的节点集没有出现在工具 gt 查询 gt 质量属性选项中 而且我找不到
  • Pandas Dataframe 中 bool 值的条件前向填充

    问题 如何转发 fill boolTruepandas 数据框中的值 如果是当天的第一个条目 True 到一天结束时 请参阅以下示例和所需的输出 Data import pandas as pd import numpy as np df
  • 当玩家触摸屏幕一侧时,如何让 pygame 发出警告?

    我使用 pygame 创建了一个游戏 当玩家触摸屏幕一侧时 我想让 pygame 给出类似 你不能触摸屏幕两侧 的错误 我尝试在互联网上搜索 但没有找到任何好的结果 我想过在屏幕外添加一个方块 当玩家触摸该方块时 它会发出警告 但这花了很长
  • ExpectedFailure 被计为错误而不是通过

    我在用着expectedFailure因为有一个我想记录的错误 我现在无法修复 但想将来再回来解决 我的理解expectedFailure是它会将测试计为通过 但在摘要中表示预期失败的数量为 x 类似于它如何处理跳过的 tets 但是 当我
  • 用于运行可执行文件的python多线程进程

    我正在尝试将一个在 Windows 上运行可执行文件并管理文本输出文件的 python 脚本升级到使用多线程进程的版本 以便我可以利用多个核心 我有四个独立版本的可执行文件 每个线程都知道要访问它们 这部分工作正常 我遇到问题的地方是当它们

随机推荐

  • 《深入理解Java虚拟机 3》类加载机制与字节码执行引擎

    本系列是用来记录 深入理解Java虚拟机 这本书的读书笔记 方便自己查看 也方便大家查阅 欲速则不达 欲达则欲速 第六章 类文件结构 讲完了自动内存管理 我们来说说执行子系统 执行子系统讲解的是JVM如何执行程序 Class文件概述 这篇我
  • QEMU-KVM基本操作

    本文主要介绍KVM虚拟机的一些基本实践操作 对KVM虚拟机的管理操作主要是基于libvirt的命令行工具virsh进行的 一 安装与启动 1 KVM模块检查 1 查看当前Linux系统核心是否包含KVM模块 Linux内核2 6 20及以上
  • Cookie和Session

    Cookie和Session Cookie是浏览器给HTTP协议提供的一个持久化存储数据的方案 由于当前浏览器站在安全的角度考虑 不敢让页面直接来访问文件系统 Cookie是存储的键值对 不能存复杂的对象 只能存字符串 Cookie是按照域
  • [每周知识碎片] 2

    使用DistributedDataParallel 在Ctrl C 退出后留下许多僵尸进程 kill之后显卡掉了 类似情况1 2 解决方法 使用 ps aux grep python 查看python进程 然后按照顺序执行 kill 9 P
  • pycharm问题一(No module named 'selenium')

    pycharm上搭建python selenium自动化测试环境 背景 小白刚尝试摸门 明明安装了selenium pycharm中还是报No module named selenium 1 首先 竟然报没有selenium 就安装呗 cm
  • 期货开户金融市场非常残酷

    大多数交易者喜欢从零基础开始他们的交易旅程 毕竟 对于它们来说 点击鼠标确认交易真的非常简单 这个数字时代使我们易于交易 交易过程看起来非常简单 但是金融市场却非常残酷 在交易市场当中 所谓的 聪明 根本没有用 市场会一次又一次地给予你教训
  • 计算机vcruntime140.dll丢失的解决方法,重新安装教程

    vcruntime140 dll是Microsoft Visual C Redistributable文件中的一个动态链接库 DLL 这个文件是由Microsoft开发的 用于支持C 编程语言的运行环境 vcruntime140 dll是W
  • Linux的设置地区

    2023年7月21日 周五上午 本来想试试把这篇文章设置成VIP可见的 因为我挺好奇设置了VIP可见后会发生什么 但后来想想觉得这有违自己写博客的初心 于是就放弃了 我写博客的初心就是传递其他人写博客的那种无私的分享精神 为社会 中文社区和
  • python同一文件内class类的调用

    class 类名 def init self self a None self b None def 函数 self x y self x x self y y A 类名 B 类名 A 函数 10 20 print B x B y 将会输出
  • python实现二分查找的四种变体

    本文用python3实现了二分查找的四种变体 一 查找第一个值等于给定值的元素 二 查找最后一个值等于给定值的元素 三 查找第一个大于等于给定值的元素 四 查找最后一个小于等于给定值的元素 python3 一 查找第一个值等于给定值的元素
  • git rebase

    目录 一 开发分支落后于主干分支 个人修复用的分支落后于被修复分支 模拟环境 开始rebase操作 二 本地分支落后于远程分支 多人共用一个分支的情况下其他人有提交 在本地模拟环境 熟悉的可以跳过 比较啰嗦 详细步骤 开始模拟情景 解决 u
  • 【Java学习笔记(一百零七)】之字节码执行引擎,栈帧结构

    本文章由公号 开发小鸽 发布 欢迎关注 老规矩 妹妹镇楼 一 字节码执行引擎 一 概述 物理机和虚拟机都有代码执行能力 物理机的执行引擎建立在处理器 缓存机 指令集和操作系统之上 而虚拟机的执行引擎则是由软件实现的 不会受到物理条件制约地定
  • 稀疏数组(尚硅谷课程的笔记)

    2 稀疏数组 文章来自于听了尚硅谷的课自己所敲 https www bilibili com video BV1E4411H73v p 10 2 1 稀疏数组 我们来看一个实际问题 此时就需要稀疏数组来压缩 稀疏数组基本介绍 当一个数组中大
  • pycharm配置解释器

    因为没有系统学习过pycharm的使用 所以在换了新电脑之后重新配置pycharm一头雾水 查了很多资料 此文用来自己记录 1 解释器选择 virtual Enviroment 第一个是虚拟解释器 我的理解是 直接从pycharm里下载一个
  • 安徽旅游可视化

    安徽旅游可视化 此系统有详细的录屏 下面只是部分截图 需要看完整录屏联系博主 系统开发语言python 框架为django 数据库mysql 分为爬虫和可视化分析
  • 没看错!selenium自动化集成REST api实践!

    01 问题 当我们描述一个 好的自动化测试用例 时 经常出现标准是 精确 自动化测试用例应该测试一件事 只有一件事 与测试用例无关的应用程序的某个部分中的错误不应导致测试用例失败 独立 自动化测试用例不应该受测试套件中任何其他测试用例影响
  • 计算机视觉 相机标定

    目录 一 相机标定原理 1 相机标定简介 2 求解原理 2 1 针孔相机模型 2 2 畸变现象 2 3 像主点偏移 2 4 单应性矩阵H 二 相机标定策略 2 1 相关策略 2 2 棋盘格标定 三 实验内容 1 实验数据 2 实验代码 3
  • Tinyhttpd项目学习及httpd学习

    在参考网络有关Tinyhttpd的内容后 我打算写下自己的学习过程与自己的理解 我会在结尾附上参考的链接 我把代码放在了gitee Tinyhttpd学习 1 Tinyhttpd是一个轻量级的HTTP服务器 2 学习该项目可以学习web服务
  • Java面向对象(4) ——多态

    目录 多态的概念 对象上下转型 多态应用之打印机 多态的概念 多态是指同一个操作作用于某一类对象 可以有不同的解释 产生不同的执行结果 比如 猫吃鱼 狗吃肉 人吃米饭 多态存在的三个必要条件 需要存在继承 extends 或实现 接口 关系
  • 自学经典5个月的python学习历程,很多老司机都不知道的奥秘

    人生苦短 我用Python 下面分享pyhton的一些基础知识 学习中可以帮助快速入门 三元条件判断的3种实现方法 C语言中有三元条件表达式 如 a gt b a b Python中没有三目运算符 但Python有它自己的方式来实现类似的功