第2天:再接着介绍一下Python呗
来源:互联网 发布:js实现点击图片放大 编辑:程序博客网 时间:2024/05/16 02:37
一、为什么学Python?
二、安装与熟悉
1、安装
2、熟悉
三、容器
1、什么是容器
2、序列的一些通用操作
3、列表操作
4、字符串操作
5、字典操作
日记小结
想偷窥我第一天的学习日记,回复python1
今天学习python的函数、循环和条件、类,这样才算对Python有一个大致的了解。今天的学习大纲如下:
四、函数
1、定义函数
2、常用函数
五、循环与条件
1、if语句
2、whiletrue/break语句
3、for语句
4、有趣的else
5、列表推导式
六、类
1、闲说类与对象
2、定义一个类
日记小结
四、函数
1、定义函数
(1)定义规则
介绍列表方法的时候已经大概说过函数,学过数学的人都知道函数,给一个参数返回一个值。函数也可以自己定义。用如下的格式:
>>>def函数名(参数): 输入函数代码
函数代码中,return表示返回的值。比如定义一个平方函数square(x),输入参数x,返回x的平方:
——————————————
>>>def square(x):return x*x
>>>square(9)
81
——————————————
有的函数看起来不返回任何值,其实返回的是布尔值(true,false):
——————————————
>>>def m(x):return x%2!=0 and x%3!=0
>>>m(6)
False
>>>m(8)
False
>>>m(11)
True
——————————————
上面的例子定义了一个m函数,该函数的参数为x,当x既不能被2整除也不能被3整除时,返回true。
(2)定义变参数函数
有时需要定义参数个数可变的函数,有几个方法可以做到:
- 给参数指定默认值
比如,定义参数f(a,b=1,c=’hehe’),那么在调用的时候,后面两个参数可以定义也可以不定义,不定义的话默认为b=1,c=’hehe’,因此如下调用都可以:
F(‘dsds’);
F(‘dsds’,2);
F(‘dsds’,2,’hdasda’);
- 参数关键字
上面的方法等于固定了参数的位置,第一个值就是第一个参数的赋值。而“参数关键字”方法,其实是固定了参数关键字,比如仍然定义参数f(a,b=1,c=’hehe’),调用的时候可以用关键字来固定:
F(b=2,a=11)
位置可以动,只要参数关键指出来就可以了。
- 可变参数列表
这是最不常用的方法,在这个阶段先略去。
2、常用函数
介绍列表方法的时候已经大概说过函数,在“数说工作室”微信公众号里回复pyhon1,查看第一天的python日记。这里再补充一下几个比较重要的函数,有一个大致的了解和印象。
(1)zip()、range()、eval()、input()和raw_input()
- zip(序列1,序列2, …)
把两个序列压缩在一起。
——————————————
>>>m=[12,45,32,98]
>>>n=['Ansel','Jiayounet','Shushuo']
>>>zip(n,m)
[('Ansel',12), ('Jiayounet', 45), ('Shushuo', 32)]
——————————————
顺便提一下,如果想把这个压缩的结果按照字典的形式显示出来怎么办?即{Ansel’:12,’Jiayounet’:45, ‘Shushuo’:32}这样的形式,使用第一天说到的dict函数即可,
——————————————
>>>z=zip(n,m)
>>>z
[('Ansel',12), ('Jiayounet', 45), ('Shushuo', 32)]
>>>dict(z)
{'Ansel':12, 'Shushuo': 32, 'Jiayounet': 45}
——————————————
可以在微信公众号里回复dict函数,查看该函数的具体使用方法。
- range()函数
可以产生一个列表:
range(结束数值)
产生一个从0到结束数值-1的列表;
range(起始值,结束值,步长)
产生一个从起始值到结束值-1,间隔为步长的列表,步长默认为1。
——————————————
[0, 1,2, 3, 4, 5, 6, 7, 8, 9]
>>>range(1,7)
[1, 2,3, 4, 5, 6]
>>>range(1,7,2)
[1, 3,5]
——————————————
- eval()函数
eval(参数),里面的参数是一个字符串,eval的作用就是把这个字符串变成一个表达式,比如下面这个例子,无论x等于多少,'x+1'就是一个字符串,而经过eval函数之后,'x+1'就变成了一个表达式,x是某个值,那么'x+1'就是这个值加上1。
——————————————
>>>x=1
>>>'x+1'
'x+1'
>>>eval('x+1')
2
——————————————
- input()与raw_input()
这两个函数一样,都是输出函数,可以搜集用户输入的信息,并返回出来。比如:
——————————————
>>>input('what s your name?')
what syour name?
——————————————
这时你在后面输入'shushuo',那么就会返回'shushuo':
——————————————
>>>input('what s your name?')
what syour name? 'shushuo'
'shushuo'
——————————————
Input与raw_input的不同地方在于,input必须要输入合法的语句,比如字符串就一定要加引号,数字可以直接输入数字,必须是合法的,但实际上每次输入字符串的时候加引号太麻烦了,raw_input的功能在于把所有的输入都当成原始数据,然后放入字符串中,不需要注意合法性。
——————————————
>>>raw_input('what s your name?')
what syour name?shushuo
'shushuo'
>>>raw_input('how old are you?')
how oldare you?27
'27'
——————————————
Python还有很多函数,不一一列举,Python还内置了一些非常有趣也非常有用的函数,这充分体现了Python的魅力,下面四个就是。
(2)map、reduce、filter
这几个是比较特殊有趣的函数,它们都是对一个集合进行处理。filter是过滤,map用于映射,reduce用于归并,是Python列表的三驾马车。
- filter(布尔函数,序列)
这个函数的功能相当于一个过滤器,将序列中的每个元素放入这个布尔函数中,返回值为true的元素。
——————————————
>>>def f(x):return x % 2 !=0 and x%3!=0
>>>filter(f,range(2,25))
[5, 7,11, 13, 17, 19, 23]
——————————————
上面的例子定义了一个f函数,该函数的参数为x,当x既不能被2整除也不能被3整除时,返回true。
- map(函数,序列)
将序列的值一个一个代入函数中,返回到函数得到的值,
——————————————
>>>def s(x):return x*x
>>>map(s,range(8))
[0, 1,4, 9, 16, 25, 36, 49]
——————————————
上面的例子先定义了一个函数s,返回参数x的平方。此外,map也支持多个序列,即:
map(函数,序列1,序列2,…)
注意两个序列的长度要一样。
——————————————
>>>def p(x,y):return x*y
>>>map(p,range(5),range(1,10,2))
[0, 3,10, 21, 36]
>>>map(None,range(5),range(1,10,2))
[(0,1), (1, 3), (2, 5), (3, 7), (4, 9)]
——————————————
这个None表示不做任何操作,将序列1和序列2单纯的压缩在一起,和zip函数的作用差不多。
- reduce(函数,序列)
首先以序列中的前两个元素调用函数,再以返回值和第三个元素调用,直到最后一个,返回一个最终值。
——————————————
>>>def add(x,y): return x + y
>>>reduce(add, range(1, 11))
55
——————————————
最后55的结果相当于1+2+3+4+5+6+7+8+9+10。
五、循环与条件
注意Python是用缩进来标识出哪一段属于本循环。
1、if语句
也是注意一是缩进,二是条件后面有冒号:
——————————————
>>>j=2.67
>>>if j<3:
print'j<3'
j=j+1
j<3
——————————————
对于多条件,注意的是elseif要写成elif,标准格式为:
if条件1:
执行语句1
elif条件2:
执行语句2
else:执行语句3
注意if…elif…else三个是并列的,不能有缩进:
——————————————
>>>t=3
>>>if t<3:
print't<3'
elift==3:
print't=3'
else:print 't>3'
t>3
——————————————
2、while true/break语句
该语句的格式为
while true即条件为真:
执行语句
if中断语句条件 : break
看个例子:
——————————————
>>>a=3
>>>while a<10:
a=a+1
printa
ifa==8:break
4
5
6
7
8
——————————————
虽然while后面的条件是a<10,即a小于10的时候一直执行,但是if条件中规定了a为8时就break掉,因此,输出只能输到8。
3、for语句
不多说了,可以遍历一个序列/字典等。
——————————————
>>>a=[1,2,3,4,5]
>>>for i in a:
print i
1
2
3
4
5
——————————————
4、循环与条件中的else
值得注意的是在Python中,else语句不仅可以应用在if语句中,还可以用在其循环语句中,比如for语句,
看下面两个例子:
——————————————
>>>for i in range(0,10):
ifi>10:
break
else:
print"helloworld"
helloworld
——————————————
range(0,10)的序列为[0,1,2,3,4,5,6,7,8,9],可以正常遍历完而不进入if语句中的break,因此执行else语句,输出helloworld。下面的语句进入了break,将不执行输出hello world:
——————————————
>>>for i in range(0,10):
ifi>5:
break
else:
print"hello world"
——————————————
同样的,while语句也可以与else连用:
——————————————
>>>i=0
>>>while i in range(0,10):
i=i+1
ifi>10:
break
else:
print"hello world"
helloworld
——————————————
5、列表推导式:轻量级循环
列表推导式,是利用其它列表来创建一个新列表的方法,工作方式类似于for循环,格式为:
[输出值 for 条件]
当满足条件时,输出一个值,最终形成一个列表:
——————————————
>>>[x*xfor x in range(10)]
[0, 1,4, 9,16, 25, 36, 49, 64, 81]
>>>[x*xfor x in range(10) if x%3==0]
[0, 9,36, 81]
——————————————
如上的例子就是利用序列[0,1,2,3,4,5,6,7,8,9],生成了一个新的序列。
六、类
作为第二天的Python学习,先对类有一个大致的印象吧。
1、闲说类与对象
类是一个抽象的概念,它不存在于现实中的时间/空间里,类只是为所有的对象定义了抽象的属性与行为。就好像“Person(人)”这个类,它虽然可以包含很多个体,但它本身不存在于现实世界上。
而对象,是类的一个具体。它是一个实实在在存在的东西。如果上面说的“人”是一个抽象的类,那么你自己,就是这个类里一个具体的对象。
一个类的对象,也叫一个类的实例。再打个比方,类好比一个模具,对象就是用这个模具造出来的具有相同属性和方法的具体事物,俗话说:“他俩真像,好像一个模子刻出来的”,就是指的这个意思。
那么用这个模具造一个具体事物,就叫类的实例化。下面看一个具体的类:
2、定义一个类
——————————————
>>>class boy:
gender='male'
interest='girl'
defsay(self):
return'I am aboy!'
——————————————
上面的语句定义了一个类boy,我们来根据这儿类的模型构造一个具体的对象:
——————————————
>>>peter=boy()
——————————————
现在来看看peter这个具体的实例有哪些属性和方法。
“什么叫属性和方法?”
它们都是“类”的两种表现,静态的叫属性,动态的叫方法。比如“人”类的属性有姓名、性别、身高、年龄、体重等等,“人”类的方法有走、跑、跳等等。
——————————————
>>>peter.gender
'male'
>>>peter.interest
'girl'
>>>peter.say()
'I am aboy!'
——————————————
这里gender和interest是peter的属性,而say是他的方法。如果再实例化另一个对象比如sam:
——————————————
>>>sam=boy()
——————————————
那么sam和peter有一样的属性和方法,可以说,“他们真是一个模子刻出来的!”
日记小结:
经过两天的学习,大概对Python有一个大概的了解,那么接下来,需要在具体的使用中不断巩固提升自己的Python水平,本统计师将会继续分享自己以后的使用日记。
数说君曰:想继续偷窥这位统计师的日记,请关注微信公众号“数说工作室”,更多精彩内容,更多学习日记,满足你的偷窥欲和学习欲!
来自 <http://mp.weixin.qq.com/s?__biz=MjM5MDEzNDAyNQ==&mid=201008325&idx=1&sn=79ee31af2756fd4d30bbeab2024d9fe4>
- 第2天:再接着介绍一下Python呗
- 量化分析师的Python日记【第2天:再接着介绍一下Python呗】
- 量化分析师的Python日记【第2天:再接着介绍一下Python呗】
- Python--第二天再接着介绍一下Python呗
- 再接着介绍一下Python呗(12/11)
- Python再接触
- Python再接触第二次
- python 爬虫2 介绍一下怎么抓取cookies,python多线程
- 介绍一下python getopt 模块
- 简单的介绍一下python
- §第一天§简单介绍一下Python的安装与开发环境的搭建
- 第一天,介绍一下自己吧
- python 第2天
- 突然发现:坚持一下阅读英文帮助也不是太难。埋头看书...再接再励...
- 介绍一下
- 再接下来。。。
- 介绍一下Python下range()函数的用法?
- 介绍一下Python下range()函数的用法?
- QT操作EXCEL
- Protobuf 序列化协议详解
- 后台传送时间格式数据json转换
- 白岩松:没有一代人的青春是容易的
- IDEA最有用的快捷键
- 第2天:再接着介绍一下Python呗
- HDU 3347 Calculate the expression By Assassin 模拟水题
- 第3天:Numpy你好
- SpringMVC学习笔记2
- [iOS开发]Xcode8.3兼容iOS10.3.1以及低版本Xcode调试高版本iOS系统
- Solr搜索引擎开发初试(2)(接"Lucene搜索引擎开发初试(1)")
- android 如何判断当前是否为飞行模式
- 恩布开源安卓手机IM,EntboostIM全新发布1.6.0版本
- 使用ls筛选某一天的文件