Python语法细节补充

首先推荐一个初学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(字符串)

关于迭代器

关于生成器

关于装饰器

(待补充......)

你可能感兴趣的:(Python语法细节补充)