这几天开始学习python,就将自己学到的东西总计一下,这是我写的第一篇博客,不好之处,还望大家见谅。
其实python包含的知识点并不多,下面我就给一一列举一下。
1.数据类型
整数 浮点数 字符串 布尔值 空值(None)
2.List与Tuple
List与Tuple都是用来存储数据的。但是却有很大的区别。
表示上 : List用[ ]表示,Tuple用()表示
更改性:List拥有append(),insert(),pop()等方法来修改List。Tuple却没有这 些方法,因而Tuple里面的元素是不可修改的。但是如果Tuple里面的元素用List时,那么可通过修改List来达到修改Tuple的目的。
例如:
t = ('a', 'b', ['A', 'B'])
L = t[2]
L[0] = 'X'
L[1] = 'Y'
print t
打印结果为:('a', 'b', ['X', 'Y'])
3.Dict和Set
首先说明Dict和Set与List和Tuple一样,也是用来存储数据的。
Dict:里面存储的是键值对。
d = {
'Adam': 95,
'Lisa': 85,
'Bart': 59
}
Set:set 持有一系列元素,这一点和 list 很像,但是set的元素没有重复,而且是无序的,这点和 dict 的 key很像。
创建set的方法如下:
s = set(['A', 'B', 'C'])
可以查看 set 的内容:
set(['A', 'C', 'B'])
访问set
由于set存储的是无序集合,所以我们没法通过索引来访问。访问 set中的某个元素实际上就是判断一个元素是否在set中。
例如,存储了班里同学名字的set:
s = set(['Adam', 'Lisa', 'Bart', 'Paul'])
#我们可以用 in 操作符判断:Bart是该班的同吗?
'Bart' in s
True
遍历set
s = set(['Adam', 'Lisa', 'Bart'])
for name in s:
print name
Lisa
Adam
Bart
更新set
remove() add()
4.函数
编写函数
定义一个函数要使用 def 语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用 return 语句返回。
def my_abs(x):
if x >= 0:
return x
else:
return -x
函数返回值
函数可以返回多个值吗?答案是肯定的。
比如在游戏中经常需要从一个点移动到另一个点,给出坐标、位移和角度,就可以计算出新的坐标:
#math包提供了sin()和 cos()函数,我们先用import引用它:
import math
def move(x, y, step, angle):
nx = x + step * math.cos(angle)
ny = y - step * math.sin(angle)
return nx, ny
这样我们就可以同时获得返回值:
x, y = move(100, 100, 60, math.pi / 6)
print x, y
151.961524227 70.0
但其实这只是一种假象,Python函数返回的仍然是单一值:
r = move(100, 100, 60, math.pi / 6)
print r
(151.96152422706632, 70.0)
用print打印返回结果,原来返回值是一个tuple!
但是,在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值,所以,Python的函数返回多值其实就是返回一个tuple,但写起来更方便。
5.切片
切片分为:List切片和字符串切片。
切片的种类:正序求片和倒序切片。
6.迭代
迭代其实就是遍历。迭代永远是取出元素本身,而非元素的索引。
索引迭代
方法是使用 enumerate() 函数:
L = ['Adam', 'Lisa', 'Bart', 'Paul']
for index, name in enumerate(L):
print index, '-', name
结果为:
0 - Adam
1 - Lisa
2 - Bart
3 - Paul
迭代dict的value
dict 对象有一个 values() 方法,这个方法把dict转换成一个包含所有value的list,这样,我们迭代的就是 dict的每一个 value:
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
print d.values()
# [85, 95, 59]
for v in d.values():
print v
#85
#95
#59
如果仔细阅读Python的文档,还可以发现,dict除了values()方法外,还有一个 itervalues() 方法,用 itervalues() 方法替代 values() 方法,迭代效果完全一样:
print d.itervalues()
# <dictionary-valueiterator object at 0x106adbb50>
for v in d.itervalues():
print v
# 85
# 95
# 59
那这两个方法有何不同之处呢?
- values() 方法实际上把一个 dict 转换成了包含 value 的list。
- 但是 itervalues() 方法不会转换,它会在迭代过程中依次从 dict 中取出 value,所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存。
- 打印 itervalues() 发现它返回一个 <dictionary-valueiterator> 对象,这说明在Python中,for 循环可作用的迭代对象远不止 list,tuple,str,unicode,dict等,任何可迭代对象都可以作用于for循环,而内部如何迭代我们通常并不用关心。
迭代dict的key和value
我们了解了如何迭代 dict 的key和value,那么,在一个 for 循环中,能否同时迭代 key和value?答案是肯定的。
首先,我们看看 dict 对象的 items() 方法返回的值:
>>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
>>> print d.items()
[('Lisa', 85), ('Adam', 95), ('Bart', 59)]
可以看到,items() 方法把dict对象转换成了包含tuple的list,我们对这个list进行迭代,可以同时获得key和value:
for key, value in d.items():
print key, ':', value
Lisa : 85
Adam : 95
Bart : 59
和 values() 有一个 itervalues() 类似, items() 也有一个对应的 iteritems(),iteritems() 不把dict转换成list,而是在迭代过程中不断给出 tuple,所以, iteritems() 不占用额外的内存。
7.列表生成式
这个我暂时还不会
网友评论