Files
sspai-100-hours-series-python/code/03/data_structures.ipynb
2022-04-27 15:27:10 +08:00

1142 lines
18 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"# 列表"
]
},
{
"cell_type": "markdown",
"source": [
"## 创建列表"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "code",
"execution_count": 172,
"outputs": [],
"source": [
"# literal\n",
"numbers = [1, 2, 3, 4, 5]"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 173,
"outputs": [
{
"data": {
"text/plain": "list"
},
"execution_count": 173,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(numbers)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 174,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1, 2, 3, 4, 5]\n"
]
}
],
"source": [
"print(numbers)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 175,
"outputs": [],
"source": [
"# key word\n",
"alphabet = list(\"abcde\")"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 176,
"outputs": [
{
"data": {
"text/plain": "list"
},
"execution_count": 176,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(numbers) # list"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 177,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['a', 'b', 'c', 'd', 'e']\n"
]
}
],
"source": [
"print(alphabet)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "markdown",
"source": [
"## 索引与切片"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "code",
"execution_count": 178,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2\n"
]
}
],
"source": [
"idx = alphabet.index(\"c\")\n",
"print(idx)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 179,
"outputs": [
{
"data": {
"text/plain": "'c'"
},
"execution_count": 179,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"alphabet[idx]"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 180,
"outputs": [
{
"data": {
"text/plain": "[2, 3, 4]"
},
"execution_count": 180,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"numbers[1:4]"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 181,
"outputs": [
{
"data": {
"text/plain": "[5]"
},
"execution_count": 181,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"numbers[-1:]"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "markdown",
"source": [
"## 常用的列表方法"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "code",
"execution_count": 182,
"outputs": [],
"source": [
"# append\n",
"others = [7, 8, 9]\n",
"numbers.append(others)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 183,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1, 2, 3, 4, 5, [7, 8, 9]]\n"
]
}
],
"source": [
"print(numbers)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 184,
"outputs": [],
"source": [
"# extend\n",
"others = list(\"fghjk\")\n",
"alphabet.extend(others)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 185,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'k']\n"
]
}
],
"source": [
"print(alphabet)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 186,
"outputs": [],
"source": [
"# remove\n",
"alphabet.remove(\"e\")"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 187,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['a', 'b', 'c', 'd', 'f', 'g', 'h', 'j', 'k']\n"
]
}
],
"source": [
"print(alphabet)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 188,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2\n"
]
}
],
"source": [
"# pop\n",
"popped = numbers.pop(1)\n",
"print(popped)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 189,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1, 3, 4, 5, [7, 8, 9]]\n"
]
}
],
"source": [
"print(numbers)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "markdown",
"source": [
"# 元组"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "markdown",
"source": [
"## 创建元组"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "code",
"execution_count": 190,
"outputs": [],
"source": [
"# literal\n",
"auth = (\"MY_ACCOUNT\", \"MY_PASSWORD\")"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 191,
"outputs": [
{
"data": {
"text/plain": "tuple"
},
"execution_count": 191,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(auth)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 192,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"('MY_ACCOUNT', 'MY_PASSWORD')\n"
]
}
],
"source": [
"print(auth)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 193,
"outputs": [],
"source": [
"# key word\n",
"database = tuple([\"DB_HOST\", \"DB_PORT\"])"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 194,
"outputs": [
{
"data": {
"text/plain": "tuple"
},
"execution_count": 194,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(database)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 195,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"('DB_HOST', 'DB_PORT')\n"
]
}
],
"source": [
"print(database)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 196,
"outputs": [],
"source": [
"# avoid this !!\n",
"greet = \"Hello, 100gle\","
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 197,
"outputs": [
{
"data": {
"text/plain": "tuple"
},
"execution_count": 197,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(greet)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 198,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"('Hello, 100gle',)\n"
]
}
],
"source": [
"print(greet)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "markdown",
"source": [
"# 字典"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "markdown",
"source": [
"## 创建字典"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "code",
"execution_count": 199,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{ 'account_stats': [1000, 10000, 100000],\n",
" 'greet': 'Hello, sspai!',\n",
" 'name': '100gle',\n",
" 'personal_info': {'gender': 'male', 'slogan': '自律即自由'}}\n"
]
}
],
"source": [
"# literal\n",
"info = {\n",
" \"name\": \"100gle\",\n",
" \"personal_info\": {\"slogan\": \"自律即自由\", \"gender\": \"male\"},\n",
" \"greet\": \"Hello, world!\",\n",
" \"greet\": \"Hello, sspai!\",\n",
" \"account_stats\": [1000, 10000, 100000],\n",
"}\n",
"from pprint import pprint\n",
"\n",
"pprint(info, indent=2)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 200,
"outputs": [],
"source": [
"# keyword\n",
"info = dict(\n",
" name=\"100gle\",\n",
" personal_info=dict(slogan=\"自律即自由\", gender=\"male\"),\n",
" greet=\"Hello, sspai!\",\n",
" account_stats=[1000, 10000, 100000],\n",
")"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "markdown",
"source": [
"## 索引与键值迭代"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "code",
"execution_count": 201,
"outputs": [
{
"data": {
"text/plain": "'100gle'"
},
"execution_count": 201,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"info[\"name\"]"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 202,
"outputs": [
{
"data": {
"text/plain": "[1000, 10000, 100000]"
},
"execution_count": 202,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"info.get(\"account_stats\") # [1000, 10000, 100000]"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 203,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"None\n"
]
}
],
"source": [
"ret = info.get(\"address\") # None\n",
"print(ret)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 204,
"outputs": [
{
"data": {
"text/plain": "'Not Found'"
},
"execution_count": 204,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"info.get(\"address\", \"Not Found\") # return \"Not Found\""
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 205,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"dict_keys(['name', 'personal_info', 'greet', 'account_stats'])\n"
]
}
],
"source": [
"keys = info.keys()\n",
"print(keys)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 206,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"dict_values(['100gle', {'slogan': '自律即自由', 'gender': 'male'}, 'Hello, sspai!', [1000, 10000, 100000]])\n"
]
}
],
"source": [
"values = info.values()\n",
"print(values)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 207,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"dict_items([('name', '100gle'), ('personal_info', {'slogan': '自律即自由', 'gender': 'male'}), ('greet', 'Hello, sspai!'), ('account_stats', [1000, 10000, 100000])])\n",
"name: 100gle\n",
"personal_info: {'slogan': '自律即自由', 'gender': 'male'}\n",
"greet: Hello, sspai!\n",
"account_stats: [1000, 10000, 100000]\n"
]
}
],
"source": [
"items = info.items()\n",
"print(items)\n",
"for k, v in items:\n",
" print(f\"{k}: {v}\")"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "markdown",
"source": [
"# 集合"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "markdown",
"source": [
"## 创建集合"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "code",
"execution_count": 208,
"outputs": [
{
"data": {
"text/plain": "dict"
},
"execution_count": 208,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# dict default literal\n",
"d = {}\n",
"type(d)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 209,
"outputs": [
{
"data": {
"text/plain": "dict"
},
"execution_count": 209,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# dict literal\n",
"d2 = {1: 2, 3: 4}\n",
"type(d2)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 210,
"outputs": [
{
"data": {
"text/plain": "set"
},
"execution_count": 210,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# set literal\n",
"s = {1, 2}\n",
"type(s)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 211,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"set()\n"
]
}
],
"source": [
"# key word\n",
"s = set()\n",
"type(s)\n",
"print(s)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "markdown",
"source": [
"## 交集、并集和差集"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "code",
"execution_count": 212,
"outputs": [],
"source": [
"numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}\n",
"odds = {1, 3, 5, 7, 9}\n",
"evens = {2, 4, 6, 8, 10}"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 213,
"outputs": [
{
"data": {
"text/plain": "True"
},
"execution_count": 213,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# union\n",
"odds.union(evens) == numbers"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 214,
"outputs": [
{
"data": {
"text/plain": "{1, 3, 5, 7, 9}"
},
"execution_count": 214,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# intersection\n",
"numbers.intersection(odds)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 215,
"outputs": [
{
"data": {
"text/plain": "{2, 4, 6, 8, 10}"
},
"execution_count": 215,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# difference\n",
"numbers.difference(odds)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 215,
"outputs": [],
"source": [],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 0
}