1、1.list 方法一、创建一个列表只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:复制代码代码如下:list1 = physics, chemistry, 1997, 2000;list2 = 1, 2, 3, 4, 5 ;list3 = “a“, “b“, “c“, “d“;与字符串的索引一样,列表索引从 0 开始。列表可以进行截取、组合等。二、访问列表中的值使用下标索引来访问列表中的值,同样你也可以使用方括号的形式截取字符,如下所示:复制代码代码如下:#!/usr/bin/pythonlist1 = physics, chemistry, 1997, 2000;list2 =
2、1, 2, 3, 4, 5, 6, 7 ;print “list10: “, list10print “list21:5: “, list21:5以上实例输出结果:复制代码代码如下:list10: physicslist21:5: 2, 3, 4, 5三、更新列表你可以对列表的数据项进行修改或更新,你也可以使用 append()方法来添加列表项,如下所示:复制代码代码如下:#!/usr/bin/pythonlist = physics, chemistry, 1997, 2000;print “Value available at index 2 : “print list2;list2 =
3、2001;print “New value available at index 2 : “print list2;以上实例输出结果:复制代码代码如下:Value available at index 2 :1997New value available at index 2 :2001四、删除列表元素可以使用 del 语句来删除列表的的元素,如下 实例:复制代码代码如下:#!/usr/bin/pythonlist1 = physics, chemistry, 1997, 2000;print list1;del list12;print “After deleting value at in
4、dex 2 : “print list1;以上实例输出结果:复制代码代码如下:physics, chemistry, 1997, 2000After deleting value at index 2 :physics, chemistry, 2000五、Python 列表脚本操作符列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。如下所示: Python 表达式 结果 描述len(1, 2, 3) 3 长度1, 2, 3 + 4, 5, 6 1, 2, 3, 4, 5, 6 组合Hi! * 4 Hi!, Hi!, Hi!, Hi! 重复3 in 1, 2, 3
5、 True 元素是否存在于列表中for x in 1, 2, 3: print x, 1 2 3 迭代六、Python 列表截取Python 的列表截取与字符串操作 类型,如下所示:复制代码代码如下:L = spam, Spam, SPAM!操作:Python 表达式 结果 描述L2 SPAM! 读取列表中第三个元素L-2 Spam 读取列表中倒数第二个元素L1: Spam, SPAM! 从第二个元素开始截取列表七、Python 列表操作的函数和方法列表操作包含以下函数:1、cmp(list1, list2):比较两个列表的元素 2、len(list) :列表元素个数 3、max(list)
6、:返回列表元素最大值 4、min(list) :返回列表元素最小值 5、list(seq) :将元组转换为列表 列表操作包含以下方法:1、list.append(obj) :在列表末尾添加新的 对象2、list.count(obj):统计某个元素在列表中出 现的次数3、list.extend(seq):在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)4、list.index(obj):从列表中找出某个值第一个匹配项的索引位置5、list.insert(index, obj):将对象插入列表6、list.pop(obj=list-1):移除列表中的一个元素(默认最后一个元素),
7、并且返回该元素的值7、list.remove(obj):移除列表中某个值的第一个匹配项8、list.reverse():反向列表中元素9、list.sort(func):对原列表 进行排序字典一、什么是字典?字典是 Python 语言中唯一的映射 类型。映射类型对象里哈希值(键,key)和指向的对象(值,value)是一对多的的关系,通常被认为是可变的哈希表。字典对象是可变的,它是一个容器类型,能存储任意个数的 Python 对象,其中也可包括其他容器类型。字典类型与序列类型的区别:1.存取和访问数据的方式不同。2.序列类型只用数字 类型的键 (从序列的开始按数值顺序索引);3.映射类型可以用
8、其他 对象类 型作键(如:数字、字符串、元祖,一般用字符串作键),和序列类型的键不同,映射类型的键直 4.接或间接地和存储数据值相关联。5.映射类型中的数据是无序排列的。这和序列类型是不一样的,序列类型是以数值序排列的。6.映射类型用键 直接“映射”到 值。字典是 Python 中最强大的数据 类型之一。二、如何创建字典和给字典赋值简单地说字典就是用大括号包裹的键值对的集合。(键值对也被称作项)一般形式:复制代码代码如下:adict = adict = key1: value2, key2:value2, 或用 dict()函数,如,adict = dict() 或 adict = dict(
9、 x,1,y,2)这样写对吗?adict = dict(x,1,y,2 )。关键字参数创建字典,如:adict= dict(name=allen,age=40)或用 fromkeys()方法,如,adict = .fromkeys(x,y), -1) 这样创建的字典的 value 是一样的,若不给值,默认为 None。特点:1、键与 值用冒号 “:” 分开;2、项与 项用逗号 “,” 分开;3、字典中的键 必须是唯一的,而值可以不唯一。复制代码代码如下:adict = name:allen, name:lucy, age:40 与 bdict = name:allen, name2:allen
10、, age:40注意:如果字典中的值为数字,最好使用字符串数字形式,如:age:040 而不用 age:040三、字典的基本操作1、如何访问字典中的 值?adictkey 形式返回键 key 对应的值 value,如果 key 不在字典中会引发一个 KeyError。2、如何检查 key 是否在字典中?a、has_key()方法 形如:adict.haskey(name) 有True,无Falseb、in 、not in 形如:name in adict 有 True,无 False3、如何更新字典?a、添加一个数据项(新元素)或键值对adictnew_key = value 形式添加一个项b
11、、更新一个数据项(元素)或键值对adictold_key = new_valuec、 删 除一个数据项(元素)或键值对del adictkey 删除键 key 的项 / del adict 删除整个字典adict.pop(key) 删除键 key 的项并返回 key 对应的 value 值四、映射类型操作符标准类型操作符(+,-,* ,,=,=,!=,and,or, not)a、字典不支持拼接和重复操作符(+,* )b、字典的比较操作先比较字典的长度也就是字典的元素个数键比较值比较例子:复制代码代码如下:adict = bdict = name:allen, age:40cmp(adict,
12、bdict) -1 or 1 or = 0五、映射相关的函数1、len() 返回字典的长度2、hash() 返回对象的哈希值,可以用来判断一个对象能否用来作 为字典的键3、dict() 工厂函数,用来创建字典六、字典的方法1、adict.keys() 返回一个包含字典所有 KEY 的列表;2、adict.values() 返回一个包含字典所有 value 的列表;3、adict.items() 返回一个包含所有( 键,值)元祖的列表;4、adict.clear() 删除字典中的所有项或元素;5、adict.copy() 返回一个字典浅拷贝的副本;6、adict.fromkeys(seq, va
13、l=None) 创建并返回一个新字典,以 seq 中的元素做该字典的键,val 做该字典中所有键对应的初始值(默认为 None);7、adict.get(key, default = None) 返回字典中 key 对应的值,若 key 不存在字典中,则返回 default 的值 (default 默认为 None);8、adict.has_key(key) 如果 key 在字典中,返回 True,否则返回 False。 现在用 in 、 not in;9、adict.iteritems() 、adict.iterkeys() 、adict.itervalues() 与它们对应的非迭代方法一样
14、,不同的是它们返回一个迭代子,而不是一个列表;10、adict.pop(key,default) 和 get 方法相似。如果字典中存在 key,删除并返回 key 对应的 vuale;如果 key 不存在,且没有给出 default 的值, 则引发 keyerror 异常;11、adict.setdefault(key, default=None) 和 set()方法相似,但如果字典中不存在 Key 键,由 adictkey = default 为它赋值;12、adict.update(bdict) 将字典 bdict 的键值对添加到字典 adict 中。七、字典的遍历1、遍历 字典的 key
15、(键)复制代码代码如下:for key in adict.keys():print key2、遍历 字典的 value(值)复制代码代码如下:for value in adict.values(): print value3、遍历 字典的 项(元素)复制代码代码如下:for item in adict.items():print item4、遍历 字典的 key-value复制代码代码如下:for item,value in adict.items(): print key=%s, value=%s %(item, value) 或 for item,value in adict.iterit
16、ems(): print key=%s, value=%s %(item, value)集合 set 是一个无序的元素集合,支持并、交、差及对称差等数学运算, 但由于 set 不记录元素位置,因此不支持索引、分片等类序列的操作。初始化复制代码代码如下:s0 = set()d0 = s1 = 0s2 = i % 2 for i in range(10)s = set(hi)t = set(h, e, l, l, o)print(s0, s1, s2, s, t, type(d0)运行结果:复制代码代码如下:set() 0 0, 1 i, h e, o, l, h 提示1.s0、d0:使用 只能创
17、建空字典,创建空集必须用 set();2.ss、sl:set 中的元素是 无序不重复 的,可以利用这个特点去除列表中的重复元素。运算操作复制代码代码如下:print(s.intersection(t), s #NameError: name tup is not defined/code五、元组运算符与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组。六、元组索引,截取因为元组也是一个序列,所以我们可以访问元组中的指定位置的元素,也可以截取索引中的一段元素,如下所示:元组:复制代码代码如下:L = (spam, Spam, SPAM
18、!)七、无关闭分隔符任意无符号的对象,以逗号隔开,默认为元组,如下实例:复制代码代码如下:#!/usr/bin/pythonprint abc, -4.24e93, 18+6.6j, xyz;x, y = 1, 2;print “Value of x , y : “, x,y;以上实例允许结果:复制代码代码如下:abc -4.24e+93 (18+6.6j) xyzValue of x , y : 1 2八、元组内置函数Python 元组包含了以下内置函数1、cmp(tuple1, tuple2):比 较两个元组元素。2、len(tuple) :计算元组元素个数。3、max(tuple):返回
19、元组中元素最大值。4、min(tuple):返回元组中元素最小 值。5、tuple(seq) :将列表 转换为 元组。九、另一种解读tuple 和 list 非常类似,但是 tuple 一旦初始化就不能修改,比如同 样是列出同学的名字:复制代码代码如下: classmates = (Michael, Bob, Tracy)现在,classmates 这个 tuple 不能变了,它也没有 append(),insert()这样的方法。其他获取元素的方法和 list 是一样的,你可以正常地使用 classmates0,classmates-1,但不能赋值成另外的元素。不可变的 tuple 有什么意
20、义?因为 tuple 不可变,所以代码更安全。如果可能,能用 tuple代替 list 就尽量用 tuple。tuple 的陷阱:当你定义一个 tuple 时,在定义的时候,tuple 的元素就必须被确定下来,比如:复制代码代码如下: t = (1, 2) t(1, 2)如果要定义一个空的 tuple,可以写成():复制代码代码如下: t = () t()但是,要定义一个只有 1 个元素的 tuple,如果你这么定 义:复制代码代码如下: t = (1) t1定义的不是 tuple,是 1 这个数! 这是因为括号()既可以表示 tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,P
21、ython 规定,这种情况下,按小括号 进行计算,计算结果自然是 1。所以,只有 1 个元素的 tuple 定义时必须加一个逗号,,来消除歧义:复制代码代码如下: t = (1,) t(1,)Python 在显示只有 1 个元素的 tuple 时,也会加一个逗号 ,,以免你误解成数学计算意义上的括号。在来看一个“可 变的”tuple :复制代码代码如下: t = (a, b, A, B) t20 = X t21 = Y t(a, b, X, Y)这个 tuple 定义的时候有 3 个元素,分 别是a ,b和一个 list。不是说 tuple 一旦定义后就不可变了吗?怎么后来又变了?别急,我们先看看定义的时候 tuple 包含的 3 个元素:当我们把 list 的元素A和B修改为X和Y 后,tuple 变为:表面上看,tuple 的元素确实变了,但其实变的不是 tuple 的元素,而是 list 的元素。tuple一开始指向的 list 并没有改成 别的 list,所以,tuple 所谓的“不变” 是说,tuple 的每个元素,指向永远不变。即指向a,就不能改成指向 b,指向一个 list,就不能改成指向其他对象,但指向的这个 list 本身是可变 的!理解了“指向不 变” 后,要创建一个内容也不 变的 tuple 怎么做?那就必须保证 tuple 的每一个元素本身也不能变。