注明:本系列课程专为全国计算机等级考试二级 Python 语言程序设计考试服务
目录
考纲考点
知识导图
1、组合数据类型的基本概念
组合数据类型
集合类型概述
序列类型概述
映射类型概述
2、列表类型
列表的定义
列表的索引
列表的切片
3、列表类型的操作
列表的操作函数
列表的操作方法
4、字典类型
字典的定义
字典的索引
5、字典类型的操作
字典的操作函数
字典的操作方法
6、实例解析:文本词频统计
本章小结
>>>S = {1010, "1010", 78.9}
>>>type(S)
>>>len(S)
3>>>print(S)
{78.9, 1010, '1010'}
>>>T = {1010, "1010", 12.3, 1010, 1010}
>>>print(T)
{1010, '1010', 12.3}
操作符的运算 | 描述 |
S – T | 返回一个新集合,包括在集合S中但不在集合T中的元素 |
S & T | 返回一个新集合,包括同时在集合S和T中的元素 |
S ^ T | 返回一个新集合,包括集合S和T中非共同元素 |
S | T | 返回一个新集合,包括集合S和T中所有元素 |
>>>S = {1010, "1010", 78.9}
>>>T = {1010, "1010", 12.3, 1010, 1010}
>>>S - T
{78.9}
>>>T – S
{12.3}
>>>S & T
{1010, '1010'}
>>>T & S
{1010, '1010'}
>>>S ^ T
{78.9, 12.3}
>>>T ^ S
{78.9, 12.3}
>>>S | T
{78.9, 1010, 12.3, '1010'}
>>>T | S
{1010, 12.3, 78.9, '1010'}
函数或方法 | 描述 |
S.add(x) | 如果数据项x不在集合S中,将x增加到s |
S.remove(x) | 如果x在集合S中,移除该元素;不在产生KeyError异常 |
S.clear() | 移除S中所有数据项 |
len(S) | 返回集合S元素个数 |
x in S | 如果x是S的元素,返回True,否则返回False |
x not in S | 如果x不是S的元素,返回True,否则返回False |
>>>S = set('知之为知之不知为不知')
>>>S
{'不', '为', '之', '知'}
>>>for i in S:
print(i, end="")
不为之知
操作符 | 描述 |
x in s | 如果x是s的元素,返回True,否则返回False |
x not in s | 如果x不是s的元素,返回True,否则返回False |
s + t | 连接s和t |
s * n 或 n * s | 将序列s复制n次 |
s[i] | 索引,返回序列的第i个元素 |
s[i: j] | 切片,返回包含序列s第i到j个元素的子序列(不包含第j个元素) |
s[i: j: k] | 步骤切片,返回包含序列s第i到j个元素以j为步数的子序列 |
len(s) | 序列s的元素个数(长度) |
min(s) | 序列s中的最小元素 |
max(s) | 序列s中的最大元素 |
s.index(x) | 序列s中第一次出现元素x的位置 |
s.count(x) | 序列s中出现x的总次数 |
>>>ls = [1010, "1010", [1010, "1010"], 1010]
>>>ls
[1010, '1010', [1010, '1010'], 1010]
>>>list('列表可以由字符串生成')
['列', '表', '可', '以', '由', '字', '符', '串', '生', '成']
>>>list()
[]
>>>ls = [1010, "1010", [1010, "1010"], 1010]
>>>ls[3]
1010
>>>ls[-2]
[1010, '1010']
>>>ls[5]
Traceback (most recent call last):
File "", line 1, in
ls[5]
IndexError: list index out of range
for <循环变量> in <列表变量>:
<语句块>
>>>ls = [1010, "1010", [1010, "1010"], 1010]
>>>for i in ls:
print(i*2)
2020
10101010
[1010, '1010', 1010, '1010']
2020
<列表或列表变量>[N: M]
或
<列表或列表变量>[N: M: K]
>>>ls = [1010, "1010", [1010, "1010"], 1010]
>>>ls[1:4]
['1010', [1010, '1010'], 1010]
>>>ls[-1:-3]
[]
>>>ls[-3:-1]
['1010', [1010, '1010']]
>>>ls[0:4:2]
[1010, [1010, '1010']]
操作函数 | 描述 |
len(ls) | 列表ls的元素个数(长度) |
min(ls) | 列表ls中的最小元素 |
max(ls) | 列表ls中的最大元素 |
list(x) | 将x转变成列表类型 |
>>>ls = [1010, "1010", [1010, "1010"], 1010]
>>>len(ls)
4 >>>lt =
["Python", ["1010", 1010, [
1010, "
Python"]]]
>>>len(lt)
2
>>>ls = [1010, 10.10, 0x1010]
>>>min(ls)
10.1
>>>lt = ["1010", "10.10", "Python"]
>>>max(lt)
'Python'
>>>ls = ls + lt
>>>print(ls)
[1010, 10.1, 4112, '1010', '10.10', 'Python']
>>>min(ls)
Traceback (most recent call last):
File "", line 1, in
min(ls)
TypeError: '<' not supported between instances of 'str' and 'float'
>>>list("Python")
['P', 'y', 't', 'h', 'o', 'n']
>>>list({"小明", "小红", "小白", "小新"})
['小红', '小明', '小新', '小白']
>>>list({"201801":"小明", "201802":"小红", "201803":"小白"})
['201801', '201802', '201803']
<列表变量>.<方法名称>(<方法参数>)
方法 | 描述 |
ls.append(x) | 在列表ls最后增加一个元素x |
ls.insert(i, x) | 在列表ls第i位置增加元素x |
ls.clear() | 删除ls中所有元素 |
ls.pop(i) | 将列表ls中第i项元素取出并删除该元素 |
ls.remove(x) | 将列表中出现的第一个元素x删除 |
ls.reverse() | 列表ls中元素反转 |
ls.copy() | 生成一个新列表,复制ls中所有元素 |
>>>lt = ["1010", "10.10", "Python"]
>>>lt.append(1010)
>>>print(lt)
['1010', '10.10', 'Python', 1010]
>>>lt.append([1010, 0x1010])
>>>print(lt)
['1010', '10.10', 'Python', 1010, [1010, 4112]]
>>>lt = ["1010", "10.10", "Python"]
>>>ls = [1010, [1010, 0x1010]]
>>>ls += lt
>>>print(lt)
['1010', '10.10', 'Python', 1010, [1010, 4112]]
>>>lt = ["1010", "10.10", "Python"]
>>>lt.insert(1, 1010)
>>>print(lt)
['1010', 1010, '10.10', 'Python']
>>>lt = ["1010", "10.10", "Python"]
>>>lt.clear()
>>>print(lt)
[]
>>>lt = ["1010", "10.10", "Python"]
>>>print(lt.pop(1))
10.10
>>>print(lt)
["1010", "Python"]
>>>lt = ["1010", "10.10", "Python"]
>>>lt.remove("10.10")
>>>print(lt)
["1010", "Python"]
del <列表变量>[<索引序号>] 或
del <列表变量>[<索引起始>: <索引结束>]
>>>lt = ["1010", "10.10", "Python"]
>>>del lt[1]
>>>print(lt)
["1010", "Python"]
>>>lt = ["1010", "10.10", "Python"]
>>>del lt[1:]
>>>print(lt)
["1010"]
>>>lt = ["1010", "10.10", "Python"]
>>>print(lt.reverse())
['Python', '10.10', '1010']
>>>lt = ["1010", "10.10", "Python"]
>>>ls = lt.copy()
>>>lt.clear() # 清空lt
>>>print(ls)
["1010", "10.10", "Python"]
>>>lt = ["1010", "10.10", "Python"]
>>>ls = lt # 仅使用等号
>>>lt.clear()
>>>print(ls)
[]
>>>lt = ["1010", "10.10", "Python"]
>>>lt[1] = 1010
>>>print(lt)
["1010", 1010, "Python"]
{<键1>:<值1>, <键2>:<值2>, … , <键n>:<值n>}
>>>d = {"201801":"小明", "201802":"小红", "201803":"小白"}
>>>print(d)
{'201801': '小明', '201802': '小红', '201803': '小白'}
<值> = <字典变量>[<键>]
>>>d = {"201801":"小明", "201802":"小红", "201803":"小白"}
>>>print(d["201802"])
小红
>>>d["201802"] = '新小红'
>>>print(d)
{'201801': '小明', '201803': '小白', '201802': '新小红'}
>>>t = {}
>>>t["201804"] = "小新"
>>>print(d)
{'201804': '小新'}
操作函数 | 描述 |
len(d) | 字典d的元素个数(长度) |
min(d) | 字典d中键的最小值 |
max(d) | 字典d中键的最大值 |
dict() | 生成一个空字典 |
>>>d = {"201801":"小明", "201802":"小红", "201803":"小白"}
>>>len(d)
3
>>>d = {"201801":"小明", "201802":"小红", "201803":"小白"}
>>>min(d)
'201801'
>>>max(d)
'201803'
>>>d = dict()
>>>print(d)
{}
<字典变量>.<方法名称>(<方法参数>)
操作方法 | 描述 |
d.keys() | 返回所有的键信息 |
d.values() | 返回所有的值信息 |
d.items() | 返回所有的键值对 |
d.get(key, default) | 键存在则返回相应值,否则返回默认值 |
d.pop(key, default) | 键存在则返回相应值,同时删除键值对,否则返回默认值 |
d.popitem() | 随机从字典中取出一个键值对,以元组(key, value)形式返回 |
d.clear() | 删除所有的键值对 |
>>>d = {"201801":"小明", "201802":"小红", "201803":"小白"}
>>>d.keys()
dict_keys(['201801', '201802', '201803'])
>>>type(d.keys())
>>>list(d.keys())
['201801', '201802', '201803']
>>>d = {"201801":"小明", "201802":"小红", "201803":"小白"}
>>>d.values()
dict_values(['小明', '小红', '小白'])
>>>type(d.values())
>>>list(d.values())
['小明', '小红', '小白']
>>>d = {"201801":"小明", "201802":"小红", "201803":"小白"}
>>>d.items()
dict_items([('201801', '小明'), ('201802', '小红'),
('201803', '小白')])
>>>type(d.items())
>>>list(d.items())
[('201801', '小明'), ('201802', '小红'), ('201803', '小白')]
>>>d = {"201801":"小明", "201802":"小红", "201803":"小白"}
>>>d.get('201802')
'小红'
>>>d.get('201804')
>>>d.get('201804', '不存在')
'不存在'
>>>d = {"201801":"小明", "201802":"小红", "201803":"小白"}
>>>d.pop('201802')
'小红'
>>>print(d)
{'201801': '小明', '201803': '小白'}
>>>d.pop('201804', '不存在')
'不存在'
>>>d = {"201801":"小明", "201802":"小红", "201803":"小白"}
>>>print(d.popitem())
('201803', '小白')
>>>d
{'201801': '小明', '201802': '小红'}
>>>d = {"201801":"小明", "201802":"小红", "201803":"小白"}
>>>d.clear()
>>>print(d)
{}
>>>d = {"201801":"小明", "201802":"小红", "201803":"小白"}
>>>del d["201801"]
>>>print(d)
{'201802': '小红', '201803': '小白'}
>>>d = {"201801":"小明", "201802":"小红", "201803":"小白"}
>>>"201801" in d
True
>>>"201804" in d
False
for <变量名> in <字典名>
<语句块>
>>>d = {"201801":"小明", "201802":"小红", "201803":"小白"}
>>>for k in d:
print("字典的键和值分别是:{}和{}".format(k, d.get(k)))
字典的键和值分别是:201801和小明
字典的键和值分别是:201802和小红
字典的键和值分别是:201803和小白
统计《哈姆雷特》英文词频
通过txt.lower()函数将字母变成小写,排除原文大小写差异对词频统计的干扰。为统一分隔方式,可以将各种特殊字符和标点符号使用txt.replace()方法替换成空格,再提取单词。
if word in counts:
counts[word] = counts[word] + 1
else:
counts[word] = 1
或者,这个处理逻辑可以更简洁的表示为如下代码:
counts[word] = counts.get(word,0) + 1
由于字典类型没有顺序,需要将其转换为有顺序的列表类型,再使用sort()方法和lambda函数配合实现根据单词次数对元素进行排序。
items = list(counts.items())#将字典转换为记录列表
items.sort(key=lambda x:x[1], reverse=True) #以第2列排序
#CalHamlet.py
def getText():
txt = open("hamlet.txt", "r").read()
txt = txt.lower()
for ch in '!"#$%&()*+,-./:;<=>?@[\\]^_‘{|}~':
txt = txt.replace(ch, " ") #将文本中特殊字符替换为空格
return txt
hamletTxt = getText()
words = hamletTxt.split()
counts = {}
for word in words:
counts[word] = counts.get(word,0) + 1
items = list(counts.items())
items.sort(key=lambda x:x[1], reverse=True)
for i in range(10):
word, count = items[i]
print ("{0:<10}{1:>5}".format(word, count))
>>>
the 1138
and 965
to 754
of 669
you 550
a 542
i 542
my 514
hamlet 462
in 436
本章主要针对初学程序设计的读者,具体讲解了程序设计语言的基本概念,理解程序开发的IPO编写方法,配置Python开发环境的具体步骤,以及Python语言和Python程序特点等内容,进一步给出了5个简单Python实例代码,帮助读者测试Python开发环境,对该语言有一个直观认识。
Python大戏即将上演,一起来追剧吧。