在pycharm中解决中文输入注释报错的问题,直接在文件的开头加入代码#encoding=utf-8
Python 语言中的五种基本的对象类型
字符串(string)简记str使用“”或者‘’括起来的一系列字符
整数简记int
浮点数float
布尔数简记bool
复数
字符type用来查看数据的类型
元组不允许二次赋值
一定要严格控制住缩进的格式
Python的缩进代表着代码块
Python的数据类型转换
List 的倒叙访问,从-1开始
对list中的元素替换直接对元素重新赋值
Tuple(元组)其中的元素一旦赋值便不可更改,但是如果touple中包含了列表,则此时列表中的元素依然可以改变
Python 的习惯写法,一般写代码块的时候缩进4个空格,退出代码块是要注意多敲一行回车
Range函数的特点range(start,stop,step),注意range函数中的结束位stop不包含在内
len 函数返回的是列表元素的个数
循环使用else语句
在 python 中,for … else 表示这样的意思,for 中的语句和普通的没有区别,else 中的语句会在循环正常执行完(即 for 不是通过 break 跳出而中断的,如果break跳出了for循环就不执行else)的情况下执行,while … else 也是一样。
python 中的元字典(dictory)包括键(key),键值(value)
花括号 {} 表示这是一个dict,然后按照 key: value, 写出来即可。最后一个 key: value 的逗号可以省略 dic = {key:value,key1:value1}
访问dict,通过dict的键调用键值,如果键不存在就会报错,如何避免错误呢,通过if ‘xiaoli’in d :或者通过d.get('xiaoli')来判断
注意dict内部的存储是无序的,不能用来存储有序的集合
set中包含一系列的元素,元素是无序的并且是不重复的,set的定义 s = set([1,2,3,4])
set的遍历 利用for判断语句,for遍历set时是无序的。
set的更新与删除:更新是用set.add(),删除时用set.remove(),注意删除是要先判断set中是否有删除的元素。
编写函数:
编写函数要用到def,依次写出函数名、括号、括号中的参数和冒号: 函数可以返回多值,其实就是返回一个元组,按照对应的位置赋予值。
一个函数可以调用其他函数,如果函数在自己的内部调用自己,那这个函数就是递归函数
使用递归函数要注意防止栈的溢出
定义默认的函数如int('123',8)
>>>83
定义可变的参数,根据需要可以定义一个参数的个数可以改变的函数如 def fn(*arg)。可变的参数之前要有*表示是可变的参数,其实就是将传入的几个参数看做了一个touple。
迭代
对于一个集合可以利用for in 语句进行迭代操作
索引迭代:对于有序的集合,都是有索引的,可以通过
使用 enumerate() 函数:
>>> L = ['Adam', 'Lisa', 'Bart', 'Paul']
>>> for index, name in enumerate(L):
... print index, '-', name
...
0 - Adam
1 - Lisa
2 - Bart
3 - Paul
使用 enumerate() 函数,我们可以在for循环中同时绑定索引index和元素name。但是,这不是 enumerate() 的特殊语法。实际上,enumerate() 函数把:
['Adam', 'Lisa', 'Bart', 'Paul']
变成了类似:
[(0, 'Adam'), (1, 'Lisa'), (2, 'Bart'), (3, 'Paul')]
因此,迭代的每一个元素实际上是一个tuple:
for t in enumerate(L):
index = t[0]
name = t[1]
print index, '-', name
如果我们知道每个tuple元素都包含两个元素,for循环又可以进一步简写为:
for index, name in enumerate(L):
print index, '-', name
这样不但代码更简单,而且还少了两条赋值语句。
可见,索引迭代也不是真的按索引访问,而是由 enumerate() 函数自动把每个元素变成 (index, element) 这样的tuple,再迭代,就同时获得了索引和元素本身。
迭代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() 不占用额外的内存。
生成列表
要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我们可以用range(1, 11):
>>> range(1, 11)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
但如果要生成[1x1, 2x2, 3x3, ..., 10x10]怎么做?方法一是循环:
>>> L = []
>>> for x in range(1, 11):
... L.append(x * x)
...
>>> L
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
但是循环太繁琐,而列表生成式则可以用一行语句代替循环生成上面的list:
>>> [x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
这种写法就是Python特有的列表生成式。利用列表生成式,可以以非常简洁的代码生成 list。
写列表生成式时,把要生成的元素 x * x 放到前面,后面跟 for 循环,就可以把list创建出来,十分有用,多写几次,很快就可以熟悉这种语法。