Files
sspai-100-hours-series-python/code/03/data_structures.ipynb
2022-04-28 12:46:35 +08:00

1177 lines
19 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"# 列表"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"## 创建列表"
]
},
{
"cell_type": "code",
"execution_count": 172,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"# literal\n",
"numbers = [1, 2, 3, 4, 5]"
]
},
{
"cell_type": "code",
"execution_count": 173,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"data": {
"text/plain": [
"list"
]
},
"execution_count": 173,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(numbers)"
]
},
{
"cell_type": "code",
"execution_count": 174,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1, 2, 3, 4, 5]\n"
]
}
],
"source": [
"print(numbers)"
]
},
{
"cell_type": "code",
"execution_count": 175,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"# key word\n",
"alphabet = list(\"abcde\")"
]
},
{
"cell_type": "code",
"execution_count": 176,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"data": {
"text/plain": [
"list"
]
},
"execution_count": 176,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(alphabet) # list"
]
},
{
"cell_type": "code",
"execution_count": 177,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['a', 'b', 'c', 'd', 'e']\n"
]
}
],
"source": [
"print(alphabet)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"## 索引与切片"
]
},
{
"cell_type": "code",
"execution_count": 178,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2\n"
]
}
],
"source": [
"idx = alphabet.index(\"c\")\n",
"print(idx)"
]
},
{
"cell_type": "code",
"execution_count": 179,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"data": {
"text/plain": [
"'c'"
]
},
"execution_count": 179,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"alphabet[idx]"
]
},
{
"cell_type": "code",
"execution_count": 180,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[2, 3, 4]"
]
},
"execution_count": 180,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"numbers[1:4]"
]
},
{
"cell_type": "code",
"execution_count": 181,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[5]"
]
},
"execution_count": 181,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"numbers[-1:]"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"## 常用的列表方法"
]
},
{
"cell_type": "code",
"execution_count": 182,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"# append\n",
"others = [7, 8, 9]\n",
"numbers.append(others)"
]
},
{
"cell_type": "code",
"execution_count": 183,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1, 2, 3, 4, 5, [7, 8, 9]]\n"
]
}
],
"source": [
"print(numbers)"
]
},
{
"cell_type": "code",
"execution_count": 184,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"# extend\n",
"others = list(\"fghjk\")\n",
"alphabet.extend(others)"
]
},
{
"cell_type": "code",
"execution_count": 185,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'k']\n"
]
}
],
"source": [
"print(alphabet)"
]
},
{
"cell_type": "code",
"execution_count": 186,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"# remove\n",
"alphabet.remove(\"e\")"
]
},
{
"cell_type": "code",
"execution_count": 187,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['a', 'b', 'c', 'd', 'f', 'g', 'h', 'j', 'k']\n"
]
}
],
"source": [
"print(alphabet)"
]
},
{
"cell_type": "code",
"execution_count": 188,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2\n"
]
}
],
"source": [
"# pop\n",
"popped = numbers.pop(1)\n",
"print(popped)"
]
},
{
"cell_type": "code",
"execution_count": 189,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1, 3, 4, 5, [7, 8, 9]]\n"
]
}
],
"source": [
"print(numbers)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"# 元组"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"## 创建元组"
]
},
{
"cell_type": "code",
"execution_count": 190,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"# literal\n",
"auth = (\"MY_ACCOUNT\", \"MY_PASSWORD\")"
]
},
{
"cell_type": "code",
"execution_count": 191,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"data": {
"text/plain": [
"tuple"
]
},
"execution_count": 191,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(auth)"
]
},
{
"cell_type": "code",
"execution_count": 192,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"('MY_ACCOUNT', 'MY_PASSWORD')\n"
]
}
],
"source": [
"print(auth)"
]
},
{
"cell_type": "code",
"execution_count": 193,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"# key word\n",
"database = tuple([\"DB_HOST\", \"DB_PORT\"])"
]
},
{
"cell_type": "code",
"execution_count": 194,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"data": {
"text/plain": [
"tuple"
]
},
"execution_count": 194,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(database)"
]
},
{
"cell_type": "code",
"execution_count": 195,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"('DB_HOST', 'DB_PORT')\n"
]
}
],
"source": [
"print(database)"
]
},
{
"cell_type": "code",
"execution_count": 196,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"# avoid this !!\n",
"greet = \"Hello, 100gle\","
]
},
{
"cell_type": "code",
"execution_count": 197,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"data": {
"text/plain": [
"tuple"
]
},
"execution_count": 197,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(greet)"
]
},
{
"cell_type": "code",
"execution_count": 198,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"('Hello, 100gle',)\n"
]
}
],
"source": [
"print(greet)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"# 字典"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"## 创建字典"
]
},
{
"cell_type": "code",
"execution_count": 199,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"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)"
]
},
{
"cell_type": "code",
"execution_count": 200,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"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",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"## 索引与键值迭代"
]
},
{
"cell_type": "code",
"execution_count": 201,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"data": {
"text/plain": [
"'100gle'"
]
},
"execution_count": 201,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"info[\"name\"]"
]
},
{
"cell_type": "code",
"execution_count": 202,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[1000, 10000, 100000]"
]
},
"execution_count": 202,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"info.get(\"account_stats\") # [1000, 10000, 100000]"
]
},
{
"cell_type": "code",
"execution_count": 203,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"None\n"
]
}
],
"source": [
"ret = info.get(\"address\") # None\n",
"print(ret)"
]
},
{
"cell_type": "code",
"execution_count": 204,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"data": {
"text/plain": [
"'Not Found'"
]
},
"execution_count": 204,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"info.get(\"address\", \"Not Found\") # return \"Not Found\""
]
},
{
"cell_type": "code",
"execution_count": 205,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"dict_keys(['name', 'personal_info', 'greet', 'account_stats'])\n"
]
}
],
"source": [
"keys = info.keys()\n",
"print(keys)"
]
},
{
"cell_type": "code",
"execution_count": 206,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"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)"
]
},
{
"cell_type": "code",
"execution_count": 207,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"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}\")"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"# 集合"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"## 创建集合"
]
},
{
"cell_type": "code",
"execution_count": 208,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"data": {
"text/plain": [
"dict"
]
},
"execution_count": 208,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# dict default literal\n",
"d = {}\n",
"type(d)"
]
},
{
"cell_type": "code",
"execution_count": 209,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"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)"
]
},
{
"cell_type": "code",
"execution_count": 210,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"data": {
"text/plain": [
"set"
]
},
"execution_count": 210,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# set literal\n",
"s = {1, 2}\n",
"type(s)"
]
},
{
"cell_type": "code",
"execution_count": 211,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"set()\n"
]
}
],
"source": [
"# key word\n",
"s = set()\n",
"type(s)\n",
"print(s)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"## 交集、并集和差集"
]
},
{
"cell_type": "code",
"execution_count": 212,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"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}"
]
},
{
"cell_type": "code",
"execution_count": 213,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 213,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# union\n",
"odds.union(evens) == numbers"
]
},
{
"cell_type": "code",
"execution_count": 214,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"data": {
"text/plain": [
"{1, 3, 5, 7, 9}"
]
},
"execution_count": 214,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# intersection\n",
"numbers.intersection(odds)"
]
},
{
"cell_type": "code",
"execution_count": 215,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"data": {
"text/plain": [
"{2, 4, 6, 8, 10}"
]
},
"execution_count": 215,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# difference\n",
"numbers.difference(odds)"
]
},
{
"cell_type": "code",
"execution_count": 215,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": []
}
],
"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
}