列表

List(列表) 是 Python 中使用最频繁的数据类型。

列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。

列表用 [ ] 标识,是 python 最通用的复合数据类型。

列表中值的切割也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。

例:

list 常用方法:

append list末尾追加一个元素

index 列出符合条件的list下标

insert 插入list一个元素

pop 末尾删除一个list元素

remove 删除list一个元素,如果有多个元素需要多次删除

sort   list排序

reverse list反序

 

 

切片

切片操作符在python中的原型是:

[start:stop:step] 即:[开始索引:结束索引:步长值]

开始索引:同其它语言一样,从0开始,序列从左向右方向中,第一个值的索引为0,最后一个为-1;

结束索引:切片操作符将取到该索引为止,不包含该索引的值;

步长值:默认是一个接一个切取,如果为2,则表示隔一取一的操作;步长值为正时,表示从左向右取;如果为负,则表示从右向左取;步长值不能为0。

 

 

元组

元组是另一个数据类型,类似于List(列表)。

元组用"()"标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。

单个tuple时,元素后面需加, ,否则python解析器不会识别tuple类型

 

 

tuple 的方法:

count 统计某个元素的数量

iindex 返回某个元素的下标

 

字典 

字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象集合,字典是无序的对象集合。

两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

字典的每个键值对(key-value)用:分割,每个对之间用, 分割;字典用"{ }"标识。字典由索引(key)和它对应的值value组成。

字典的赋值方法有三种:

 

 字典常用的方法:

get   返回指定键的值,如果值不在字典中返回默认值None。

setdefault 

如果字典中包含有给定键,则返回该键对应的值,否则返回为该键设置的值。

 

 

习题:

 

现有列表 list1 = ['XXXX', 'b', 3, 'c', '&', 'a', 3, '3', 3, 'aa', '3', 'XXXX'] list2 = ['e', 'f', 'g']

要求对其做以下操作:

1. 取出 ‘XXXX’ 中间的部分,形成一个新的列表list3

list3 = list1[1:-1]

print list3

 

2. 对list3 做一下几部操作

1)删除特殊符号

del list3[4]

print list3

 

2)统计3 在list3中出现的次数

print list3.count(3)

 

3)用最简短的代码去除list3中 26个字母以外的元素(要求只能对list3操作)

# ['b', 3, 'c', 3, 'a', 3, '3', 3, 'aa', '3']

list3 = list3[0:5:2]

4)对list3排序

list3.sort()

 

5)在末尾追加'd',并把list2追加到list3

list3.append('d')

 

 

3. 现有两个变量 a = ('h',) b = ('h')

1)将a和b分别追加到上一题的list3中,观察有什么区别

list3.append(a)

list3.append(b)

print list3

 

2)将1生成的list3转换成元组(扩展:自己搜索方法)

tuple(list3)

 

3)打印出只有一个元素'h'的元组,在2中生成的元组中的索引

print tuple(list3).index(a)

 

字典的练习题:

练习: 1. 现有一个字典dict1 保存的是小写字母a-z对应的ASCII码 dict1 = {'a': 97, 'c': 99, 'b': 98, 'e': 101, 'd': 100, 'g': 103, 'f': 102, 'i': 105, 'h': 104, 'k': 107, 'j': 106, 'm': 109, 'l': 108, 'o': 96, 'n': 110, 'q': 113, 'p': 112, 's': 115, 'r': 114, 'u': 117, 't': 116, 'w': 119, 'v': 118, 'y': 121, 'x': 120, 'z': 122}

1) 将该字典按照ASCII码的值排序

import string

 

dict1 = {'a': 97, 'c': 99, 'b': 98, 'e': 101, 'd': 100, 'g': 103, 'f': 102, 'i': 105, 'h': 104, 'k': 107, 'j': 106, 'm': 109, 'l': 108, 'o': 96, 'n': 110, 'q': 113, 'p': 112, 's': 115, 'r': 114, 'u': 117, 't': 116, 'w': 119, 'v': 118, 'y': 121, 'x': 120, 'z': 122}

 

print sorted(dict1.iteritems(), key=lambda d:d[1], reverse=False)

 

2) 有一个字母的ASCII错了,修改为正确的值,并重新排序

dict1['o'] = 111

print sorted(dict1.iteritems(), key=lambda d:d[1], reverse=False)

 

2. 用最简洁的代码,自己生成一个大写字母 A-Z 及其对应的ASCII码值的字典dict2(使用dict,zip,range方法)

dict2 = dict(zip(string.uppercase,range(65,92)))

print dict2

 

3. 将dict2与第一题排序后的dict1合并成一个dict3

dict3 = dict(dict1, **dict2)