热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

001_第一部分_[Python基础]

一.python基础:数据类型:原始类型:intfloatbyte复合类型:由其他原始类型组合起来的类型listdictcuple运算符和表达式:算术运算符:加减乘除取模幂地板除-

一.python基础:


  • 数据类型:

    原始类型:int float byte复合类型:由其他原始类型组合起来的类型list dict cuple

  • 运算符和表达式:

算术运算符:加 / 减 / 乘 / 除 / 取模 / 幂 / 地板除&#43; - * / % ** //python2 的 除:10 / float(20)位运算符[二进制之间的运算]:bin(60) 转换成二进制数int(&#39;1100&#39;,2) 将二进制转换成十进制& 按位与 都为1 才为1 | 按位或 存在1 即为1^ 按位异或 相同的为0,不同的为1~ 按位取反 正数的补码&#xff0c;反码都是其本身负数的补码是:符号位不变,其余各位求反,末位加1 &#xff0c;既11111反码是:符号位为1,其余各位求反,但末位不加1 &#xff0c;既11110假设有一个数~9&#xff0c;计算步骤如下&#xff0c;9&#61;1001其补码为01001&#xff0c;对其取反10110&#xff0c;这个数是在内存中存放的&#xff0c;现在需要装换成原码&#xff0c;既先减1&#xff0c;然后取反得 11010&#xff0c;符号位为1是负数&#xff0c;既-10<<左移>> 右移

  • 按位取反:

  • ---正数的补码和反码都是其本身,但是前面要加上正数的符号位 "0"---负数的符号位是"1"负数的补码是:符号位不变,其余各位求反,末位加1负数的反码是:符号位不变,其余各位求反---二进制数在内存中是以补码的形式存放的---

60的按位取反计算:第一步:计算60的 [补码] 和 [反码]:原码 补码 反码十进制 60二进制 111100 0111100 0111100第二步:取反[取反操作是对补码进行取反]:补码1000011反码补码 - 11000010原码11111011 代表是负数111101 转换成十进制为61-61

  • 比较运算符[返回布尔类型]:

    &#61;&#61; 等于!&#61; 不等于> 大于<小于

  • 逻辑运算符:

  • and 与 同时True才为Trueor 或 只要存在True 则为Truenot 非 取反逻辑运算的短路功能:前面False后面就不会再计算:1&#43;2 >4 and (2&#43;2) &#61;&#61; 4前面是True就不会再计算后面:1&#43;2 <4 or (2&#43;2) &#61;&#61; 3 

    ---

    def add(x, y):print("%d &#43; %d" %(x, y))return x&#43;yadd(1, 2) > 4 and add(2, 3) &#61;&#61; 5...: 1 &#43; 2Out[2]: False

    ---

    def add(x, y):print("%d &#43; %d" % (x, y))return x&#43;yadd(1, 2) <4 and add(2,3) <6...: 1 &#43; 22 &#43; 3True

    ---

    def add(x, y):print("%d &#43; %d" % (x, y))return x&#43;yadd(1, 2) <4 and add(2,3) <4...: 1 &#43; 22 &#43; 3False

  • 其他运算符:

&#61; 赋值运算符in 成员运算符not in 成员运算符is 身份运算符, 比较两个元素的id; 列表不能用is 做比较is not 身份运算符is 使用的环境经常拿来判断是不是None;

  • 表达式与优先级:

1. 一元高于二元2. 数值高于逻辑3. 算术运算高于位运算4. 乘除高于加减5. 拿不准时加括号

  • 程序结构:

1. 顺序结构2. 分支结构3. 循环结构关于 SWITCHPython中并没有switch结构,因为&#39;switch&#39;结构完全可以由&#39;if elif else&#39;语句来实现switch实现方法:粗糙版:#coding:utf8 #add minus divide using python from __future__ import division x&#61;1 y&#61;2 operator&#61;&#39;/&#39; result&#61;{ "&#43;":x&#43;y, "-":x-y, "*":x*y, "/":x/y } print(result.get(operator)) 改进版:#!/usr/bin/env python# -*- encoding:utf-8 -*-class calculate:def __init__(self, x, op, y):self.x &#61; xself.op &#61; opself.y &#61; ydef count(self):result&#61;{"&#43;":self.x&#43;self.y,"-":self.x-self.y,"*":self.x*self.y,"/":self.x/self.y}print(result.get(self.op))mark &#61; calculate(10,"&#43;",2)mark.count()

  • python的三元运算

a &#61; 4b &#61; a if a > 0 else 0

  • RANGE函数

range(x) [0,x)range(m, n) [m, n)range(m, n, s) [m,n),步长为s

  • break 子句

* 只能出现在循环结构中* 用于跳出当前循环结构

  • continue子句:

* 只能出现在循环结构中* 用于跳过此次迭代的剩余操作

  • else子句:

循环结构的else子句是python特有的,用于表示一个循环不是经过&#39;break&#39;跳出循环,提前结束循环,而是正常退出的,才会执行else中的语句;

二.内置容器:


  • 列表

* list是最常用的线性数据结构* list是一系列元素的有序组合* list是可变的列表的操作:定义列表:li &#61; []li &#61; list()li &#61; [1, 2, 3]查看帮助文档:help(list)增:append, extend, insert删:clear, pop, remove改:reverse, sort查:count, index其他:copy增:li &#61; []append:只能一个一个增加li.append(3)extend:扩展li.extend([5,6,7])li[3, 5, 6, 7]insert:位置之前插入li.insert(0, 0) 在第一个之前插入0删:clear:清空列表li.clear()remove:从左开始删除指定元素一个,如果删除的元素不存在会报错ValueErrorli.remove(3) 删除元素3pop:删除指定位置元素:如果不存在会报错IndexErrorli.pop() 删除最后一个元素li.pop(3) 删除key是3的元素改:reverse:颠倒列表顺序:sort:从小到大排序: 仅用于简单数字排序sort(reverse&#61;True) 从大到小排序:查:count:显示匹配元素个数li.count(3)其他:index(3):返回指定元素在列表中的位置;如果不存在会报ValueError:index(value, [start, [stop]]) copy: 深拷贝,会生成一个新的list赋值是浅拷贝,浅拷贝的数据修改会对原来的list产生影响;下标操作:li[1]li[1] &#61; 10切片:li[3:5]: 前面是闭区间 后面是开区间li[3:]li[:] 效果和copy是一样的,效率会比copy快;li[:4] li[4:-2] 切到倒数第二个;后面是开区间li[-4:-1]li[2:6:2]: start, stop ,步长li[6:2:-1] start,stop ,反向显示,步长为1li[6:2:-2] start,stop,反向显示,步长为2li[::-1]li[::2]

  • 元组[tuple]:

tuple和list大多数地方类似tuple是不可变结构tuple只能获取值定义一个元组:t &#61; ()t &#61; tuple()count:统计元素个数index:返回指定元素在元组中的位置下标操作[通过下标获取value]:t[1]* PACKING & UNPACKINGPACKING :把多个变量的值变成一个元组或者列表,默认是变成元组UNPACKING :也可以把一个元组或者列表赋值给多个变量---x, *y &#61; (1, 2, 3, 4)print(x)1print(y)[2, 3, 4]---*x, y &#61; (1, 2, 3, 4)print(x)[1, 2, 3]print(y)4---*_ 这个表示赋值给一个不能用的变量:x, *_, y &#61; (1, 2, 3, 4)print(x)1print(y)4---x, (y, z) &#61; (1, (2, 3))print(x)1print(y)2print(z)3---

  • 集合:

集合的含义和数学上集合的含义相同集合不是线性结构* 集合元素是唯一的集合元素是可hash的集合的操作:初始化:s &#61; set()s &#61; set([1, 2, 3])增:s.add(3) //添加一个元素s.update([3, 4, 5, 6]) //集合添加list中的多个元素删:remove: 删除,删除不存在的元素会抛出异常;discard: 删除,删除不存在的元素不会抛出异常;clear: 清空pop: 随机删除集合中的一个元素集合运算:union 并集 a | bintersection 交集 a & bdifference 差集,不可交换的 a - bsymmetric_difference 集合之差的并集 a ^ b集合判断[返回布尔值]:issubset 子集issuperset 超集isdisjoint

  • 字典:

* 字典是一种无序集合* 字典是一种KV结构* value可以是任何对象* key是唯一的* key必须是可hash对象字典的操作:d &#61; dict()d &#61; {&#39;a&#39;:5, &#39;b&#39;:4}d[&#39;a&#39;]d.keys()dict_keys([&#39;b&#39;, &#39;a&#39;])遍历 key:for key in d.keys():print(d[key])遍历 value:for value in d.values():print(value)遍历key和value:for key,value in d.iterms():print(key, value)print(&#39;%s &#61;> %s&#39; %(key, value))d.iterkeys() 返回的是一个生成器;pop,popitem 用于删除元素d.pop(&#39;key&#39;) 需要指定key,删除不存在的值返回KeyErrord.pop(&#39;key&#39;,6) 删除不存在的值将返回 6增加字典元素:d[&#39;c&#39;] &#61; 7



推荐阅读
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
  • 标题: ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • 集合的遍历方式及其局限性
    本文介绍了Java中集合的遍历方式,重点介绍了for-each语句的用法和优势。同时指出了for-each语句无法引用数组或集合的索引的局限性。通过示例代码展示了for-each语句的使用方法,并提供了改写为for语句版本的方法。 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • STL迭代器的种类及其功能介绍
    本文介绍了标准模板库(STL)定义的五种迭代器的种类和功能。通过图表展示了这几种迭代器之间的关系,并详细描述了各个迭代器的功能和使用方法。其中,输入迭代器用于从容器中读取元素,输出迭代器用于向容器中写入元素,正向迭代器是输入迭代器和输出迭代器的组合。本文的目的是帮助读者更好地理解STL迭代器的使用方法和特点。 ... [详细]
author-avatar
living_ren
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有