首先推荐一个初学Python的网站,相信不少人都阅读过,廖雪峰的Python教程:
http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000
下面的很多细节知识在廖雪峰的教程中也能找到,在这里算是做一次强调吧:
关于List(列表)
列表操作包含以下函数:
- cmp(list1, list2) 比较两个列表的元素
- len(list) 列表元素个数
- max(list) 返回列表元素最大值
- min(list) 返回列表元素最小值
- list(seq) 将元组转换为列表
列表操作包含以下方法:
- list.append(var)
- list.insert(index,var)
- list.pop(var) 返回最后一个元素,并从list中删除
- list.remove(var) 删除第一次出现的该元素
- list.count(var) 该元素在列表中出现的个数
- list.index(var) *该元素第一个匹配项的索引位置,无则抛异常 *
- list.extend(list2) 合并list2到list上
- list.sort([func]) 对原列表进行排序
- list.reverse() 反向列表中元素
list 操作符: + *
print [1,2] + [2,3]
[1, 2, 2, 3]
print ['A']*10
['A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A']
关键字del
lst = ['a','b','c']
del lst[1]
print lst
['a', 'c']
enumerate(list)
函数用于遍历序列中的元素以及它们的下标:
for (i, j) in enumerate(lst):
print i, j
0 a
1 c
其他
- 关键字in判断列表元素是否存在
- 列表截取规则:list[i] list[-i] list[:i] list[i:] 不再详述
关于Tuple(元组)
tuple和list非常类似,但是tuple一旦初始化就不能修改
普通定义:t = (1, 2)
定义空元组:t = ()
定义单个元组:t=(1,) 没有逗号会被认为定义了一个int数字1
定义包含list的元组:t = ('a', 'b', ['A', 'B']) 此时可以修改['A', 'B']中的元素,因为['A', 'B']是一个list,而python中的list是可变类型,元组t只能保证其内部的非可变类型一旦初始化就不能修改,原理是tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!
** Python的基本类型如字符串(str)、整数(int)、浮点数(float)都是不可变的,元组(tuple)也是不可变的,而列表(list),字典(dict)是可变的 **
关于Dict(字典)
接着上面的讨论延伸,dict有一对对的key-value组合而成,那么什么样的数据类型能够作为key呢?
其实就是不可变类型的数据,因为key必须是确定的,也就是说上面提到的字符串(str)、整数(int)、浮点数(float)、元组(tuple)都能作为dict的key。而dict的value没有限制,可以是任何类型的数据。
dict常用方法:
- dict.get(key, 0) 同dict[key],多了个没有则返回缺省值,0
- dict.has_key(key) 有该键返回TRUE,否则FALSE
- dict.keys() 返回字典键的列表
- dict.values() 返回字典值的列表
- dict.items() 返回字典键和值的列表
- dict.update(dict2) 增加合并字典
- dict.popitem() 得到一个pair,并从字典中删除它,已空则抛异常
- dict.clear() 清空字典,同del dict
- dict.cmp(dict1,dict2) 比较字典,(优先级为元素个数、键大小、键值大小) 第一个大返回1,小返回-1,一样返回0
- dict1 = dict 别名,指向同一地址
- dict2=dict.copy() 浅拷贝,它复制了对象,但对于对象中的元素,依然使用引用
- dict2=copy.deepcopy(dict1) 深拷贝,它完全复制了包含对象中的元素
dict排序:
sorted(numtimeAll.items(), key=lambda x:x[1])
cmp:用于比较的函数,比较什么由key决定,有默认值,迭代集合中的一项;key:用列表元素的某个属性和函数进行作为关键字,有默认值,迭代集合中的一项;reverse:排序规则 reverse = True 或者 reverse = False,有默认值。返回值:是一个经过排序的可迭代类型,与iterable一样。 注:一般来说,cmp和key可以使用lambda表达式。
sort()与sorted()的不同在于,sort是在原位重新排列列表,而sorted()是产生一个新的列表。
关于Str(字符串)
关于迭代器
关于生成器
关于装饰器
(待补充......)