Python学习(一)
原文
学python的目的
看过一些资料和教程,在大数据挖掘方面python用的人比较多,作为脚本语言,具有很多其他语言不具备的特点,一些深度学习框架就是用python实现的,例如google的Tensor Flow等,因此我觉得有必要掌握python这门语言。
了解python
python简单优雅,通俗易懂,适合开发网络应用,包括网站,后台服务等,还可意义编写一些常用的小工具以及一些脚本任务。当然python也有一些缺点,最大的缺点就是运行慢,相比于C语言非常慢,因为python是解释型语言,你的代码在执行时会一行一行地翻译成CPU能理解的机器码,这个翻译过程非常耗时,每次运行需要重新翻译,所以很慢。而C程序是运行前直接编译成CPU能执行的机器码,而且下次运行不需要在编译了,所以非常快。即使有这个缺点,但是并不很大的影响python的使用,大量的应用程序不需要这么快的运行速度,因为用户根本感觉不出来。例如开发一个下载MP3的网络应用程序,C程序的运行时间需要0.001秒,而Python程序的运行时间需要0.1秒,慢了100倍,但由于网络更慢,需要等待1秒,你想,用户能感觉到1.001秒和1.1秒的区别吗?这就好比F1赛车和普通的出租车在北京三环路上行驶的道理一样,虽然F1赛车理论时速高达400公里,但由于三环路堵车的时速只有20公里,因此,作为乘客,你感觉的时速永远是20公里。
python 基础
这次学习python的教程来自廖雪峰python教程
第一个Python程序
>>> print 'hello world!'
hello world!
输入和输出
输入
python2.7提供了输入函数 raw_input()
>>> name = raw_input()
Chengs
>>> name
'Chengs'
还可以在输入函数中添加提示输入内容的部分
>>> name = raw_input('input your name:')
input your name:Chengs
>>> name
'Chengs'
输出
输出可一用 print 函数
可以直接输出字符串,整数,浮点数等数据类型
>>> print 'hello','world'
hello world
>>> name = 'chengs'
>>> print name
'chengs'
>>> print 3
3
>>> a = 100
>>> b = 200
>>> print a + b
3000
print 函数还能对输出结果进行格式化:
和C语言类似,%s 对应字符串,%d 对应整数
>>> name = 'chengs'
>>> print 'hello %s' % name
hello chengs
>>> a = 10
>>> print 'the rate is %d%%' % a
the rate is 10%
上面代码中用联系两个百分号%%来输出‘%’
raw_input 和 print 是命令行下最基本的输入输出。
数据类型和变量
- 整数,浮点数,字符串,布尔值基本和C/C++类似不在列出。
- 空值用None表示,它和0不一样。
- 变量,和C/C++中的要求差不多,可以不需要声明,例如上述代码中的变量。
- 常量,通常使用大写来表示,例如:PI = 3.1415926,虽然说是常量,但是如果非要修改也拦不住你,只是用大写来表示一个常量,建议最好不要修改,要自觉。
字符串和编码
字符串和编码这里有链接,自己写感觉头疼,最讨厌编码问题。
list&tuple&dict&set类型
list
列表list是python内置的一种数据类型,可以随时删除和添加元素
>>> classmates = ['Michael','Bob','Tracy']
>>> classmates
['Michael','Bob','Tracy']
list的长度可以用len()函数得到
>>> len(classmates)
3
list很像C/C++中的数组类型,可以用下表来获取元素
>>> classmates[0]
'Michael'
>>> classmates[1]
'Bob'
>>> classmates[2]
'Tracy'
list也和数组一样有界限,当下表越界之后会报错。
不仅如此,list有比C/C++中数组更好的功能
可以用负数作为索引
>>> classmates[-1]
'Tracy'
>>> classmates[-2]
'Bob'
用-1表示最后一个元素,-2表示倒数第二个元素,以此类推。。。
list 可以通过append()函数向尾部不断添加元素
>>> classmates.append('Chengs')
>>> classmates
['Michael','Bob','Tracy','Chengs']
还能将元素插入到指定的位置上
>>> classmates.insert(1,'Jack')
>>> classmates
['Michael','Jack','Bob','Tracy','Chengs']
删除list中的元素使用函数pop(),默认从最后一个开始删除,还可以指定下标来删除特定的元素
>>> classmates.pop()
'Chengs'
>>> classmates
['Michael','Jack','Bob','Tracy']
>>> classmates.pop(2)
'Bob'
>>> classmates
['Michael','Jack','Tracy',]
list中的元素可以是相同类型也可以是不同类型
list中的元素也可以是一个list,如:['hello',[how are you], True, 3,]
tuple
tuple和list十分相似,但是tuple的特点是一旦初始化就不能修改了,它没有append()和insert()函数,但是也可以使用下标运算,比如
>>> classmates('Michael','Bob','Tracy')
>>> classmates[1]
'Bob'
如果tuple只有一个元素,声明时需要在后面加一个逗号以区别数学运算的括号
>>> t = (1,)
>>> t
(1,)
dict
python的dict和C++中 map很相似,是使用键值对key-map来存储的
>>> d = {'Michale':95,'Bob':75,'Tracy':85}
>>> d['Bob']
75
如果使用的某个key不在dict中则会报错,可以使用 in 来判断dict中是否有key
>>> 'Tomas' in d
False
dict可以通过get函数来获取value,如果不存在key则返回None或者自己指定返回模teding值
>>> d.get('Tomas',-1)
-1
删除一对键值对可以用pop()函数
>>> d.pop('Bob')
75
>>> d
{'Michale':95,'Tracy':85}
dict的一个特点是其中的key是无序的,不像list中的元素是有序的
set
set是一组key的集合,但是不存储value,并且key不能重复,相同的元素自动过滤掉了
>>> s = set([1,2,3])
>>> s
set([1,2,3])
>>> ss = ([1,2,2,3,3,4,4,5])
>>> ss
set([1,2,3,4,5])
可以通过remove()函数来移除某元素
>>> ss.remove(3)
>>> ss
set([1,2,4,5])
set既然是集合,那么就可以有交和并的运算,交运算用&,并运算用 |
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
set([2, 3])
>>> s1 | s2
set([1, 2, 3, 4])
条件判断和循环
条件判断
条件判断和C/C++中的类似,同样用if-else来表示,但是多重判断使用if-elif-elif...else来实现
>>> age = 20
>>> if age >= 18:
... print 'your age is', age
... print 'adult'
...
your age is 20
adult
>>> age = 3
>>> if age >= 18:
... print 'adult'
... elif age >= 6:
... print 'teenager'
... else:
... print 'kid'
for循环
for...in是一种迭代循环
>>> names = ['Michael', 'Bob', 'Tracy']
>>> for name in names:
... print name
'Michael'
'Bob'
'Tracy'
>>> sum = 0
>>> for x in range(101):
... sum = sum + x
...
>>> print sum
5050
while循环
和C/C++中的while循环是十分相似
>>> sum = 0
>>> n = 99
>>> while n > 0:
... sum = sum + n
... n = n - 2
...
print sum
2500
小结
第一部分先写到这里,后面再慢慢总结。
原文