python
python 进入编辑模式
exit();退出编辑模式
import+ filename 在编辑模式下导入 filename这个py文件
python filename.py 直接运行这个py文件
print()会依次打印每个字符串,遇到逗号“,”会输出一个空格,因此,
输出的字符串是这样拼起来的
print('a','b')//a b
name = input()/*input里面可以放置提示的内容*/
wenbin
>>> name
'wenbin'
>>>
以#开头的语句是注释
当语句以冒号:结尾时,缩进的语句视为代码块
and、or和not 与或非
python里面的空值用None表示
a = 'ABC'
print(a)#ABC
b = a
print(b)#ABC
a = 'XYZ'
print(a)#XYZ
print(b)#ABC
执行第一步 在内存中创建了一个字符串ABC 创建了一个变量a 并把a的指针指向ABC
执行第二步 创建了一个变量b 并把b的指针指向a指针指向的数据ABD
执行第三步 并把a的指针指向新的数据XYZ(b的指针指向还是原来的ABC)
在Python中,通常用全部大写的变量名表示常量;
在Python中,有两种除法,一种除法是/:
>>> 10 / 3
3.3333333333333335
/除法计算结果是浮点数,即使是两个整数恰好整除,结果也是浮点数:
>>> 9 / 3
3.0
地板除//(两个整数的除法仍然是整数)
>>> 10 // 3
3
可以得到两个整数相除的余数(%和JS一样)
>>> 10 % 3
1
Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符:
>>> ord('A')
65
>>> ord('中')
20013
>>> chr(66)
'B'
>>> chr(25991)
'文'
**encode()和decode();
>> 'ABC'.encode('ascii')
b'ABC'
>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'
>>> b'ABC'.decode('ascii')
'ABC'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
'中文'
len()函数计算的是str的字符数,如果换成bytes,len()函数就计算字节数:
格式化
>>> 'Hello, %s' % 'world'
'Hello, world'
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'
格式化整数和浮点数还可以指定是否补0和整数与小数的位数
>>> '%2d-%02d' % (3, 1)
' 3-01'
>>> '%.2f' % 3.1415926
'3.14'
如果你不太确定应该用什么,%s永远起作用,它会把任何数据类型转换为字符串:
list列表(可以随时添加和删除其中的元素)
append();添加
insert(1,'wenbin');第一个参数插入的位置 第二个参数插入的数据
要删除list末尾的元素,用pop()方法
要删除指定位置的元素,用pop(i)方法,其中i是索引位置:
>>> classmates = ['Michael', 'Bob', 'Tracy']
>>> classmates[2]
'Tracy'
>>> classmates[-1]
'Tracy'
>>> classmates.append('Adam')
>>> classmates
['Michael', 'Bob', 'Tracy', 'Adam']
>>> classmates.insert(1, 'Jack')
>>> classmates
['Michael', 'Jack', 'Bob', 'Tracy', 'Adam']
>>> classmates.pop()
'Adam'
>>> classmates
['Michael', 'Jack', 'Bob', 'Tracy']
>>> classmates.pop(1)
'Jack'
>>> classmates
['Michael', 'Bob', 'Tracy']
tuple(另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改)
所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,
就不能改成指向其他对象,但指向的这个list本身是可变的!
要定义一个只有1个元素的tuple t = (1,)
>>> t = ('a', 'b', ['A', 'B'])
>>> t[2][0] = 'X'
>>> t[2][1] = 'Y'
>>> t
('a', 'b', ['X', 'Y'])
判断
if <条件判断1>:
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>
input()返回的数据类型是str
循环
names = ['Michael', 'Bob', 'Tracy']
for name in names:
print(name)
#Michael
#Bob
#Tracy
range()函数,可以生成一个整数序列,再通过list()函数可以转换为list
>>> list(range(5))
[0, 1, 2, 3, 4]
break语句可以在循环过程中直接退出循环,而continue语句可以提前结束本轮循环,并直接开始下一轮循环。
这两个语句通常都必须配合if语句使用。
字典
要避免key不存在的错误,有两种办法,一是通过in判断key是否存在:
d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> 'Thomas' in d
False
二是通过dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value:
d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
print(d.get('Thomas'))#None 因为没有'Thomas'这个key
print(d.get('Thomas',1))#1 如果没有'Thomas'这个key 默认值是1
print(d.get('Bob', -1))#75 如果有'Bob'这个value就是他本身 而不是默认值1
要删除一个key,用pop(key)方法,对应的value也会从dict中删除:
和list比较,dict有以下几个特点:
查找和插入的速度极快,不会随着key的增加而变慢;
需要占用大量的内存,内存浪费多。
而list相反:
查找和插入的时间随着元素的增加而增加;
占用空间小,浪费内存很少。
所以,dict是用空间来换取时间的一种方法、
set
>>> s = set([1, 2, 3])
>>> s
{1, 2, 3}
重复元素在set中自动被过滤:
>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
{1, 2, 3}
>>> s.add(4)
>>> s
{1, 2, 3, 4}
通过remove(key)方法可以删除元素:
>>> s.remove(4)
>>> s
{1, 2, 3}
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}
x =[4, 6, 2, 1, 7, 9]
y = x[ : ] #通过分片操作将列表x的元素全部拷贝给y
不能写( y = x)
y.sort()
print y #[1, 2, 4, 6, 7, 9]
print x #[4, 6, 2, 1, 7, 9]
python 方法
abs();绝对值
max();最大值
int();数据类型转换 转换为整数;
float();数据类型转换 转换为浮点数;
str();数据类型转换 转换为字符串;
bool();数据类型转换 转换为True 或 False;
hex(x);将一个整数转换为一个十六进制字符串
定义函数用def
例如
def my_abs(x):
if x >= 0:
return x
else:
return -x
pass语句什么都不做,那有什么用?实际上pass可以用来作为占位符,
比如现在还没想好怎么写函数的代码,就可以先放一个pass,让代码能运行起来。
只允许整数和浮点数类型的参数。数据类型检查可以用内置函数isinstance()实现 isinstance(x, (int, float))
raise TypeError('bad operand type') 扔出错误
函数可以同时返回多个值,但其实就是一个tuple。
这5种参数都可以组合使用。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、
命名关键字参数和关键字参数。
*args是可变参数,args接收的是一个tuple;
**kw是关键字参数,kw接收的是一个dict。
尾递归防止栈溢出
python 切片
list截取
L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
L[0:3]
['Michael', 'Sarah', 'Tracy']
如果第一个索引是0,还可以省略:
L[:3]
['Michael', 'Sarah', 'Tracy']
L[1:3]
['Sarah', 'Tracy']
L[-2:]
['Bob', 'Jack']
L[-2:-1]
['Bob']
L = list(range(100)) #[0,1,......100]
前10个数,每两个取一个:
L[:10:2]
[0, 2, 4, 6, 8]
tuple也是一种list
(0, 1, 2, 3, 4, 5)[:3]
(0, 1, 2)
字符串'xxx'也可以看成是一种list
'ABCDEFG'[:3]
'ABC'
'ABCDEFG'[::2]
'ACEG'
python for循环(遍历)(迭代)
遍历key
>>> d = {'a': 1, 'b': 2, 'c': 3}
>>> for key in d:
... print(key)
...
遍历value
for value in d.values():
遍历key和value
for k, v in d.items():
print([x * x for x in range(1, 11)])
#[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
[x * x for x in range(1, 11) if x % 2 == 0]
#[4, 16, 36, 64, 100]
s='Hellow'
s.lower()#hellow 转小写
isinstance(s, str)判断s是否是字符串 是的话返回True 不是的话 返回False
http://svgtopng.com/zh/ SVG转PNG*****************
是否可迭代判断方法
from collections import Iterable
isinstance([], Iterable)
isinstance(需要判断的数据, Iterable)#True 代表可以迭代 False 表示不能迭代
可以使用isinstance()判断一个对象是否是Iterator对象
>>> from collections import Iterator
>>> isinstance((x for x in range(10)), Iterator)
True
>>> isinstance([], Iterator)
False
>>> isinstance({}, Iterator)
False
>>> isinstance('abc', Iterator)
False
生成器都是Iterator对象,但list、dict、str虽然是Iterable,却不是Iterator。
把list、dict、str等Iterable变成Iterator可以使用iter()函数:
>>> isinstance(iter([]), Iterator)
True
>>> isinstance(iter('abc'), Iterator)
True
总结可迭代和 迭代器
凡是可作用于for循环的对象都是Iterable类型;
凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;
集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。
python
map()和reduce()传入的第一个参数是f,即函数对象本身。由于结果r是一个Iterator,Iterator是惰性序列,
因此通过list()函数让它把整个序列都计算出来并返回一个list
map
>>> def f(x):
... return x * x
...
>>> r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> list(r)
[1, 4, 9, 16, 25, 36, 49, 64, 81]
reduce
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
但是如果要把序列[1, 3, 5, 7, 9]变换成整数13579,reduce就可以派上用场:
>>> from functools import reduce
>>> def fn(x, y):
... return x * 10 + y
...
>>> reduce(fn, [1, 3, 5, 7, 9])
13579
装饰器decorator就是一个返回函数的高阶函数
def log(func):
def wrapper(*args, **kw):
print('call %s():' % func.__name__)
return func(*args, **kw)
return wrapper
@log
def now():
print('2015-3-25')
>>> now()
call now():
相关推荐
【上海大学计算机组成原理实验报告】七、程序转移机制
学习实现程序转移的硬件机制//掌握堆栈寄存器的使用//手动方式实现子程序调用转移过程//手动方式实现子程序返回转移过程//编程实现`OUT`寄存器交替显示`11`和`55`//若要求`11`和`55`各显示`50`次后停机,应该如何修改程序?//根据实验指导书的相关内容,实验箱系统的程序转移硬件机制在于,当`LDPC`有效时,如果此时`DUBS`上的值就是转移的目标地址,则此目标地址被打入`PC`,从而实现程序的转移;若`LDPC`为`0`是附带条件的,就形成“条件转移”。
TypeScript-02基础知识之函数
TypeScript中的函数相关知识
【ROS】usb_cam相机标定
1. 唠叨两句 当我们要用相机做测量用途时,就需要做相机标定了,不然得到的计算结果会有很大误差,标定的内容包括三部分:内参,外参还有畸变参数。所以标定的过程就是要求得上面这些参数。 以前弄这个事估计挺麻烦,需要做实验和计算才能得到,现在通过ros的开源包几分钟就能完成相机标定,感激! 具体的内外参和畸变系数的说明,可以看看Reference里面的第一个链接,写得很详细。 2. 准备工作 要准备三样东西: usb_cam的ROS启动包 相机标定的ROS包 还有一个用于标定的棋盘格 1)usb_cam启动包
java与js中分别将1输出为0001,15输出为0015...的方法
在java中有函数叫String.format("%02d",x) //x是你要输出的整数 这样1就输出01,前面自动补0, 11还是输出11不变。 这里使用了String.format()方法,作用就是格式化输出参数. “%02d”是指定输出格式,%作先导标记,0表示自动补0, 2的意思是最小长度为2(如果用4,则1输出0001),d表示整数。 在js中并没有类似的方法,但是我们可以用别的方法...
百度飞桨EasyDL图像分类:收费口车辆类型自动识别
车辆类型识别在高速收费路口的应用中,场景相对单一且拍摄角度一致,因此首次训练模型效果优异,准确率达到了95%,鉴于市面上的车辆类型不断更新迭代且部分车辆的主要特征也不断发生变化,因此可在模型投入应用后,持续收集模型实际运行过中产生的数据,定期添加数据进行模型迭代,保证模型效果。企业将AI模型应用到实际场景中以实现停车费用、过路费用的自动计算,在收费口中由相机对每个车辆进行拍摄,拍摄到的图片传输到预测设备上进行类型识别,基于识别出来的车辆类型自动进行费用计算。该功能可在发起训练时选选择对应的开关打开即可。..
使用VNC可视化Docker容器
Docker容器可视化
TypeScript 基础语法
快速上手 本文档是为了当前端JS开发同事快速适应TS开发所准备的。因此,列举了一些常用的语法规则,便于工作中进行开发提高效率。学习TS主要有以下几大模块: 目录结构 用 [TOC]来生成目录: 快速上手 目录结构 基础类型 变量声明 类 函数 模块 命名空间 基础类型 名称 key 布尔值 boole...
Simulink中通过MEX与MinGW实现C/C++结构体变量的高效导入
本文详细介绍了在Simulink中通过MEX工具链与MinGW编译器,高效导入C/C++结构体变量的完整流程。文章从需求背景出发,逐步讲解了MinGW环境配置、.h文件编写规范、核心导入命令Simulink.importExternalCTypes的使用,以及如何在MATLAB Function模块和总线创建器中调用自定义结构体,旨在实现模型与代码的无缝对齐,为后续仿真和代码生成奠定坚实基础。
02 TypeScript基础语法
用最简单的笔记还原最干货的 TypeScript知识
WIN10系统下VS2019编译CloudCompare2.12.4
CloudCompare2.12.4
《民机适航入门指南:从法规学习到项目实践的全面解析》
适航(Airworthiness)是指航空器、其发动机、螺旋桨和其他部件在规定条件下,能够安全飞行并满足有关航空法规规定的条件。简而言之,适航代表了航空器在任何时候都能安全运营的状态。适航在民用航空领域尤为关键,因为飞机必须经过严格的适航认证才能投入商用。这些认证的目标是确保飞机能够在广泛的运行条件下保持飞行安全,从而保护乘客、机组和地面人员的生命财产安全。适航法规覆盖了飞机的整个生命周期,包括设计、制造、测试、运营、维护和报废。
TypeScript学习笔记之三——JavaScript相关函数介绍与实例(为原理性介绍,较少实例)
参考教程:https://www.liaoxuefeng.com/wiki/1022910821149312(廖雪峰老师) 我是在此教学基础上加上自己的理解,对相关部分函数按自己理解的方式来记录,所以这篇其实算转载。廖雪峰老师的教程很不错,相关知识都介绍的很详细。以下为个人认为调用较多的函数: 字符串String中toUpperCase()把一个字符串全部变为大写;toLowerCase()相...
ABAP 后台作业里的消息机制:把 MESSAGE 写对,避免作业莫名取消
SAP后台作业消息处理机制解析 本文深入剖析了SAP系统中后台作业的消息处理机制,揭示了前台与后台执行环境的关键差异。核心发现包括: 后台作业对消息的处理规则: 所有消息写入Job log而不显示 根据消息类型决定是否继续执行 W警告在列表处理阶段会被自动转为E错误 关键异常处理: 通过error_message可捕获E/A类型消息 A类型消息会触发隐式数据库回滚 未被捕获的E/A消息将导致作业中断 实用解决方案: 将业务提示改为S或I类型 使用DISPLAY LIKE保持前台体验 通过error_mess
推荐看过的好书好教程
长期更新做记录。。。。 python: head first python(中文版):图文并茂 JavaScript高级程序设计(第3版)中文
OV9734 DATASHEET,完整规格书
OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等
WINCC7.3破解文件
WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!
python学习日记(1)
函数参数 位置参数 可变参数 传入list或者tuple 可变参数 关键字参数 限制输入的key函数参数位置参数默认参数def power(x): return x*x或者def power(x, n = 2): ans = 1 for i in range(n): ans *= x return ans 注意 默认参数必须指向不变对象 def add
C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片
基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正
6.25--Python学习日记之Python安装
1.自学课程:廖雪峰老师网站https://www.liaoxuefeng.com/ 2.软件安装 CPython Python官方网站下载Python 3.8。 建议选择exe版本,便于离线安装,也便于自动配置。 (32位电脑选择x86,我的电脑右键单击查看属性可查看电脑是32还是64位) 选择自定义安装,并且打钩建立PATH 下一步(本页)全部默认就好 修改路径 等待安装。 成功啦 cmd测试一下(快捷键win+...
怀旧版电脑GBC模拟器
再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。
python学习日记:part1
python前段时间也用过,弄了几个小爬虫,感觉python挺强大的,短小精悍,现在工作需要,现在重拾python。从零开始,当然也不完全从零开始,现在在博客记录下学习历程 前期准备: 1.python3.5 2.廖雪峰的python3教程 3.python3程序开发指南(第2版,修订版)
Python学习日记1
教材:廖雪峰老师博客 基础:0(初中的一丢丢VB??) 记录那些初识代码中的摸爬滚打。 Day1 Q1: 切换目录?答:cd【】完整路径,或直接d: Q2: 调取.py文件?答:只要命令,不要其他 Q3: ...
python代码学习日记
python代码学习记录 一、使用heapq库实现优先队列 二、torch相关函数 1、随机矩阵构造方法 2、torch.gather的用法
负基础python学习日记-0806-环境配置及基础操作
一、学习网页 计算机科学基础教程https://www.bilibili.com/video/BV18s411A7Rj?p=3 (gcy说要学) 廖雪峰python教程https://www.liaoxuefeng.com/ (还是适合有一点基础的人学,把基础补上之后来接着学) Python技术客栈https://www.bilibili.com/video/BV17J411Y71g?p=5&spm_id_from=pageDriver (菜鸡友好度1000%,保姆级教程,就是部分过程有
Python学习过程(日记篇)——Reagan J
Python自学之路一条工程狗的心路历程新的征程Mac和Linux环境注释运算符说明dict和list的区别dcit常用操作功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章U...
python入门(一)_前言
前言之前找工作经历了一番纠结和起伏~所以准备学习GeoServer和OpenLayer的计划也就暂缓了下来~(因为一些原因)目前在新的工作单位刚刚入职一周,感觉还不错,慢慢的会开始新的自学过程,学习python也是因为新单位应该是会用到的比较多吧,和ArcGIS的结合也是比较紧密的,所以准备好好学学~而且我本身对于爬虫也是比较感兴趣的~~~学习方式我学习的教程是廖雪峰老师的python课程,课程适合
小白python学习连续剧
@sunny python学习日记 注:写这个纯属为了督促自己学习,记录一下学习历程。 大四学生在读,是个贼懒的工科女王吧 之前有一些littlelittle的基础,寒假决定重新自学python,争取每天更新自己的学习笔记!fighting! 2020年2月4日 第一篇 下午开始直接进击bilibili学习网站(为什么不从上午开始?因为江南百景图和够级需要我???? 我想先学一下爬虫,我看的是这个→链接: link. (在这直接放链接不会被举报吧… 之前有在学校里看过python基础 是廖雪峰老师的 所以直
Python日记(一):拜见小主——Python
近日学习Python,特将学习过程及一点心得记录于此。 由于之前做过一个Java爬虫的项目,虽然很长时间没有碰过爬虫,但是小郭同学有一颗不死的爬虫心,哈哈。最近在互联网上找一些电影的时候,有很多电影只提供在线观看,没有下载的链接,突然有了一种要把它爬下来的冲动。虽然用Java做爬虫有很多现成的框架像Lucene、crawler4j、Nutch、ElasticSearch等一些技术成熟的框架...
Python从零点一开始的学习日记(0)
写在前面的话 本人清华三本专业,小码渣一枚,现在坐在宿舍里整理思绪。大二暑假,是时候考虑自己将来的去向了,目前正在导师手底下搬砖,感觉做科研前景暗淡,自己家境贫穷,遂准备转行CS。手里握着计辅,也算是之前给自己留的一条后路。暑假无所事事,本来打算的暑研因为签证黄了,故利用时间学学python。注册了优快云账号,希望为时未晚。看到我博客的同学和前辈们,欢迎大家多批评指正,也多鼓励一下我!毕竟转行...
关于Python利用埃氏筛法筛选素数中yield迭代知识的学习日记
关于Python利用埃氏筛法筛选素数中yield迭代知识的学习日记(个人学习理解,错误更新)yield存在的意义生成无限个奇数的函数方法筛去已有的素数的倍数的数字,它们肯定不是素数生成动态的可删减数字的数列输出数字的函数主体代码主体为什么不先根据奇数建立一个数列? 本篇博客是在参阅廖雪峰的filter介绍之后对yield方法产生疑问,进行研究后所做的笔记。夹杂了我对这个filter例子的理解,如果...
2475



被折叠的 条评论
为什么被折叠?



