计算机二级练习仓库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

803 lines
52 KiB

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 实践10 集合和字典\n",
"\n",
"1.认识集合和字典的表示和操作;\n",
"2.掌握使用集合和字典的经典算法"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 1.认识集合\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"(1)使用字面常量创建集合"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"s1 = {2,4,6,8,10}"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"t = 'hello’\n",
"s2 = {t} \n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"p = [1,2,3]\n",
"s3 = {p}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"哈希(hash)是一种将相对复杂的值简化为小整数的计算方式,一个对象在自己的生命周期中有一哈希值(由hash函数确定)是不可改变的,那么它就是可哈希的(hashable)的。所有python中所有不可改变的的对象都是可哈希的,比如字符串,元组,而可改变的容器如字典,列表,集合都是不可哈希(unhashable)。 \n",
"集合中的元素必须是可哈希的(hash),因为其存储是依赖于对象的哈希码,所有可变对象(set、list、dict)都是不可哈希的,不能作为集合的元素。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"(2)创建空集合"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"set()"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s = set()\n",
"s"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"dict"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s = {}\n",
"type(s)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"(3)使用集合,列表去重复示例"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 2, 3, 4]"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"L = [1,2,3,4,1,2,3,4]\n",
"s = set(L)\n",
"L = list(s)\n",
"L"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 2, 3, 4]"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"L = [1,2,3,4,1,2,3,4]\n",
"L = list(set(L))\n",
"L"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"(4)集合的方法\n",
"区分add和update\n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'Facebook', 'Google', 'Runoob', 'Taobao'}"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"thisset = {\"Google\", \"Runoob\", \"Taobao\"}\n",
"thisset.add(\"Facebook\")\n",
"thisset"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"t=(\"DangDang \",\"JD\",\"Amazon\")"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{('DangDang ', 'JD', 'Amazon'), 'Facebook', 'Google', 'Runoob', 'Taobao'}"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"thisset.add(t)\n",
"thisset"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'Facebook', 'Google', 'Runoob', 'Taobao'}"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"thisset.remove(t)\n",
"thisset"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'Amazon', 'DangDang ', 'Facebook', 'Google', 'JD', 'Runoob', 'Taobao'}"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"thisset.update(t)\n",
"thisset"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"请思考集合的add,update,remove与列表的append,extend,remove方法的相同和不同之处"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2. 认识字典"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"(1)字典的字面量创建 \n",
"```python\n",
"\n",
"d = {key1:value1, key2:value2,…… }\n",
"\n",
"d = {}\n",
"```\n",
"字典的键值必须使用不可变对象,但是字典的值可以使用可变对象或不可变对象。"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1: 'MON', 2: 'TUE', 3: 'WED', 4: 'THU', 5: 'FRI', 6: 'SAT', 0: 'SUN'}"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"d1={1:'MON',2:'TUE',3:'WED',4:'THU',5:'FRI',6:'SAT',0:'SUN'}\n",
"d1"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"ename": "TypeError",
"evalue": "unhashable type: 'list'",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-28-36ee2708315a>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[0mp\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0md2\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m{\u001b[0m\u001b[0mp\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;36m10\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[1;31mTypeError\u001b[0m: unhashable type: 'list'"
]
}
],
"source": [
"p = [1,2,3]\n",
"d2 = {p:10}"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{10: [1, 2, 3]}"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"d3 = {10:p}\n",
"d3"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [],
"source": [
"d = {} \n",
"# d = dict()\n"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1: 'MON', 2: 'TUE', 3: 'WED', 4: 'THU', 5: 'FRI', 6: 'SAT', 0: 'SUN'}"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"t1 = (1,2,3,4,5,6,0)\n",
"t2 = ('MON','TUE','WED','THU','FRI','SAT','SUN')\n",
"months = dict(zip(t1,t2))\n",
"months"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"(2)字典的访问操作\n",
"```python\n",
"d[key] #返回键为key的value,如果key不存在,导致keyError。\n",
"d[key]=value #如果key存在,设置值为value,如果key不存在,增加键值对。\n",
"del d[key] #删除字典元素。如果key不存在,导致keyError。\n",
"```\n"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'SUN'"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"months[0]"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [],
"source": [
"months[0] = 'Sun'"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{1: 'MON',\n",
" 2: 'TUE',\n",
" 3: 'WED',\n",
" 4: 'THU',\n",
" 5: 'FRI',\n",
" 6: 'SAT',\n",
" 0: 'Sun',\n",
" 7: 'sun'}"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"months[7] = 'sun'\n",
"months"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [],
"source": [
"del months[7]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 小试身手1"
]
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"(1)输入:d={} 输入:d[('a')]=1 输入:d[('a','b')]=2 输入:d[('a','b','c')]=3\n",
"输入:s=0\n",
"输入: for\tkey in d:\n",
" s+=d[key]\n",
"d:________________________s:__________\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"(2)输入:d1={\"A\":65,\"B\":66,\"a\":97,\"c\":99},输入:d2=d1 输入:d2[\"A\"]=0 输入:s=d1[\"A\"]+d2[\"A\"]\n",
"S:__________"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"(3)输入:d1={\"A\":65,\"B\":66,\"a\":97,\"c\":99},输入:d2=dict(d1) 输入:d2[\"A\"]=0 输入: s=d1[\"A\"]+d2[\"A\"]\n",
"S:__________"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"(4)创建英文字母大小写 ASCII 码字典创建小写字母的ASCII 码字典步骤如下: \n",
" 输入:d1=[chr(i) for i in range(97,123)] \n",
" 输入:d2=[i for i in range(97,123)]\n",
" 输入:d=dict(zip(d1,d2))\n",
"请继续在d中添加大写字母的 ASCII 码键值对。\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"attachments": {
"image.png": {
"image/png": "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"
}
},
"cell_type": "markdown",
"metadata": {},
"source": [
"(3)字典的方法\n",
"![image.png](attachment:image.png)\n",
"```python\n",
"for key in d.keys():\n",
"……\n",
"for key in d.values ():\n",
"……\n",
"for key,value in d.items():\n",
" ……\n",
"\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1 2 3 4 5 6 0 "
]
}
],
"source": [
"for key in months.keys():\n",
" print(key,end=\" \")"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1 2 3 4 5 6 0 "
]
}
],
"source": [
"for key in months:\n",
" print(key,end=\" \")"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"MON TUE WED THU FRI SAT Sun "
]
}
],
"source": [
"for x in months.values():\n",
" print(x,end=\" \")"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1 MON 2 TUE 3 WED 4 THU 5 FRI 6 SAT 0 Sun "
]
}
],
"source": [
"for key,x in months.items():\n",
" print(key,x,end=\" \")"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'WED'"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"months.get(3)"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'not found'"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"months.get(9,\"not found\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 3.统计算法优化"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"统计sentence中出现的字符次数,从大到小输出\n",
"(1)字典方法"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(' ', 9) ('e', 8) ('y', 4) ('s', 4) ('a', 4) ('n', 3) ('r', 3) ('o', 2) ('t', 2) ('h', 2) ('l', 2) ('p', 1) ('u', 1) ('d', 1) ('i', 1) ('g', 1) ('.', 1) "
]
}
],
"source": [
"sentence = \"open your eyes and see things as they really are.\"\n",
"chars = list(sentence) #将sentence中的字符打散到列表\n",
"d={}\n",
"for ch in chars: #遍历chars的字符,在字典中对该字符计数增1\n",
" d[ch]=d.get(ch,0)+1 #如果ch已存在,get读取并增1修改,如果不存在,get函数返回0,增加新的键,初值为1\n",
"L = sorted(d.items(),key=lambda x:x[1],reverse = True)\n",
"for ch,c in L:\n",
" print((ch,c),end=\" \")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"(2)列表方法"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(' ', 9) ('e', 8) ('a', 4) ('s', 4) ('y', 4) ('r', 3) ('n', 3) ('h', 2) ('l', 2) ('t', 2) ('o', 2) ('i', 1) ('g', 1) ('d', 1) ('.', 1) ('p', 1) ('u', 1) "
]
}
],
"source": [
"sentence = \"open your eyes and see things as they really are.\"\n",
"chars = list(sentence)\n",
"chs = list(set(chars)) #对chars中字符去重复,获取出现的字符的模版\n",
"L=[]\n",
"for ch in chs: #按字符的模版逐个统计每个字符在列表chars中出现的次数,并将(字符,次数)追加到L\n",
" L.append((ch,chars.count(ch)))\n",
"L = sorted(L,key=lambda x:x[1],reverse = True)\n",
"for ch,c in L:\n",
" print((ch,c),end=\" \")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 小试身手 2\n",
"\n",
"输入两个整数,在这两个整数组成的闭区间范围内生成100个随机整数,并统计出现数据的次数,按照生成随机数从小到大的顺序,每行输出一个生成的整数以及其出现的次数,以空格间隔。\n",
"例如:\n",
"输入:\n",
"3 5\n",
"输出:\n",
"3 36\n",
"4 39\n",
"5 25"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.10"
}
},
"nbformat": 4,
"nbformat_minor": 2
}