diff --git a/0_python/1_Basics.ipynb b/0_python/1_Basics.ipynb index e933749..01010da 100644 --- a/0_python/1_Basics.ipynb +++ b/0_python/1_Basics.ipynb @@ -11,7 +11,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 1. 导入和Python之禅\n" + "## 1. 导入库与Python之禅\n" ] }, { @@ -22,16 +22,24 @@ { "data": { "text/plain": [ - "['1_Basics.ipynb',\n", + "['.ipynb_checkpoints',\n", + " 'Python.pdf',\n", + " '1_Basics_EN.ipynb',\n", + " '2_Print_Statement_EN.ipynb',\n", + " '4_Data_Structure_2_EN.ipynb',\n", + " '5_Control_Flow_EN.ipynb',\n", + " '6_Function_EN.ipynb',\n", + " 'README.md',\n", + " 'README_EN.md',\n", + " '1_Basics.ipynb',\n", " '2_Print_Statement.ipynb',\n", " '3_Data_Structure_1.ipynb',\n", + " '3_Data_Structure_1_EN.ipynb',\n", " '4_Data_Structure_2.ipynb',\n", " '5_Control_Flow.ipynb',\n", " '6_Function.ipynb',\n", " '7_Class.ipynb',\n", - " 'Python.pdf',\n", - " 'README.md',\n", - " '.ipynb_checkpoints']" + " '7_Class_EN.ipynb']" ] }, "execution_count": 1, @@ -47,7 +55,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -86,6 +94,30 @@ "cell_type": "markdown", "metadata": {}, "source": [ + "**Python 之禅, by Tim Peters**\n", + "```\n", + "优美胜于丑陋(Python 以编写优美的代码为目标)\n", + "明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似)\n", + "简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现)\n", + "复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁)\n", + "扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套)\n", + "间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题)\n", + "可读性很重要(优美的代码是可读的)\n", + "即便假借特例的实用性之名,也不可违背这些规则(这些规则至高无上)\n", + "不要包容所有错误,除非你确定需要这样做(精准地捕获异常,不写except:pass风格的代码)\n", + "当存在多种可能,不要尝试去猜测\n", + "而是尽量找一种,最好是唯一一种明显的解决方案(如果不确定,就用穷举法)\n", + "虽然这并不容易,因为你不是 Python 之父(这里的 Dutch 是指 Guido)\n", + "做也许好过不做,但不假思索就动手还不如不做(动手之前要细思量)\n", + "如果你无法向人描述你的方案,那肯定不是一个好方案;反之亦然(方案测评标准)\n", + "命名空间是一种绝妙的理念,我们应当多加利用(倡导与号召)\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ "## 2. 变量" ] }, @@ -98,7 +130,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -109,7 +141,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -133,7 +165,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -142,7 +174,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -188,7 +220,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -197,7 +229,7 @@ "3" ] }, - "execution_count": 4, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -275,7 +307,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -284,7 +316,7 @@ "0.5" ] }, - "execution_count": 14, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -315,7 +347,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -324,7 +356,7 @@ "5" ] }, - "execution_count": 15, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -337,12 +369,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "地板除法就是将这样得到的结果转换成最接近的整数。" + "地板除法(floor divide)就是将这样得到的结果转换成最接近的整数。" ] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -351,7 +383,7 @@ "1.0" ] }, - "execution_count": 16, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -383,7 +415,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 12, "metadata": {}, "outputs": [], "source": [ @@ -392,7 +424,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -401,7 +433,7 @@ "True" ] }, - "execution_count": 10, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -412,7 +444,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -421,7 +453,7 @@ "False" ] }, - "execution_count": 11, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -453,7 +485,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ @@ -463,7 +495,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -482,7 +514,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -491,7 +523,7 @@ "2" ] }, - "execution_count": 23, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -513,7 +545,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -522,7 +554,7 @@ "10" ] }, - "execution_count": 12, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -560,7 +592,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### 4.1 从一个系统到另一个系统的转换" + "### 4.1 从一个进制到另一个进制的转换" ] }, { @@ -572,7 +604,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -581,7 +613,7 @@ "'0xaa'" ] }, - "execution_count": 25, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -592,7 +624,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 21, "metadata": {}, "outputs": [ { @@ -601,7 +633,7 @@ "170" ] }, - "execution_count": 26, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -612,7 +644,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -621,7 +653,7 @@ "'0o10'" ] }, - "execution_count": 2, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -639,7 +671,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -693,7 +725,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -702,7 +734,7 @@ "'b'" ] }, - "execution_count": 10, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -713,7 +745,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 25, "metadata": {}, "outputs": [ { @@ -722,7 +754,7 @@ "98" ] }, - "execution_count": 11, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } @@ -747,7 +779,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 26, "metadata": { "scrolled": false }, @@ -775,7 +807,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 27, "metadata": {}, "outputs": [ { @@ -800,7 +832,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 28, "metadata": {}, "outputs": [ { @@ -809,7 +841,7 @@ "(4, 1)" ] }, - "execution_count": 36, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } @@ -827,7 +859,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 29, "metadata": {}, "outputs": [ { @@ -946,14 +978,14 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 32, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Type something here and it will be stored in variable abc \tHello world!\n" + "Type something here and it will be stored in variable abc \t10\n" ] } ], @@ -963,7 +995,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 33, "metadata": {}, "outputs": [ { @@ -972,7 +1004,7 @@ "str" ] }, - "execution_count": 16, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } diff --git a/0_python/2_Print_Statement.ipynb b/0_python/2_Print_Statement.ipynb index 0b142cb..16c2bfe 100644 --- a/0_python/2_Print_Statement.ipynb +++ b/0_python/2_Print_Statement.ipynb @@ -47,19 +47,25 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Hey\n" + "Hey\n", + "line1line2\n" ] } ], "source": [ - "print('Hey')" + "print('Hey')\n", + "a = 'line1\\\n", + "line2\\\n", + "\\\n", + "'\n", + "print(a)" ] }, { @@ -92,7 +98,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 7, "metadata": { "scrolled": true }, @@ -243,7 +249,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -255,12 +261,12 @@ } ], "source": [ - "print(\"I want to be printed %s\" %'here')" + "print(\"I want to be printed %s\" % 'here')" ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -277,7 +283,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -301,7 +307,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -370,7 +376,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# 2. PrecisionWidth和FieldWidth" + "# 2. `PrecisionWidth`和`FieldWidth`" ] }, { @@ -384,7 +390,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -393,7 +399,7 @@ "'3.121312'" ] }, - "execution_count": 19, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -411,7 +417,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -420,7 +426,7 @@ "'3.12131'" ] }, - "execution_count": 20, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -438,22 +444,22 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "' 3.12131'" + "'-33.12131'" ] }, - "execution_count": 21, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "\"%9.5f\" % 3.121312312312" + "\"%9.5f\" % -33.121312312312" ] }, { diff --git a/0_python/3_Data_Structure_1.ipynb b/0_python/3_Data_Structure_1.ipynb index 097bbb6..37b2966 100644 --- a/0_python/3_Data_Structure_1.ipynb +++ b/0_python/3_Data_Structure_1.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# 数据结构" + "# 数据结构1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "简单地说,它是特定结构中的数据集合或数据组。" + "数据结构是计算机存储、组织数据的方式,简单来说是指相互之间存在一种或多种特定关系的数据元素的集合" ] }, { @@ -27,7 +27,7 @@ "source": [ "列表是最常用的数据结构。可以把它看作用方括号括起来的数据序列,数据之间用逗号分隔。这些数据都可以通过调用其索引值来访问。\n", "\n", - "list的声明只需将变量等同于'[ ]'或list即可。" + "`list`的声明只需将变量等同于`[ ]`或`list`即可。" ] }, { @@ -65,7 +65,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 1, "metadata": {}, "outputs": [ { @@ -92,12 +92,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "在python中,索引从0开始。因此,现在包含两个元素的列表x的apple索引值为0,orange索引值为1。" + "在Python中,索引从`0`开始。因此,现在包含两个元素的列表`x`的apple索引值为`0`,orange索引值为`1`。" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -106,7 +106,7 @@ "'apple'" ] }, - "execution_count": 4, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -119,12 +119,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "索引也可以按照相反的顺序进行。这是最后一个可以被首先访问的元素。这里,索引从-1开始。因此,指数-1将是橙色,指数-2将是苹果。" + "索引也可以按照相反的顺序进行。这是最后一个可以被首先访问的元素。这里,索引从`-1`开始。因此,索引`-1`对应是橙色,索引`-2`对应的是苹果。" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -133,7 +133,7 @@ "'peach'" ] }, - "execution_count": 5, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -151,7 +151,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -162,12 +162,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "在这里我们已经声明过两个列表x和y每一个包含自己的数据。现在,这两个列表可以再一次被放入另一个也具有自己的数据的列表z中。列表中的这个列表被称为嵌套列表,这就是数组的声明方式,我们将在后面看到。" + "在这里我们已经声明过两个列表`x`和`y`每一个包含自己的数据。现在,这两个列表可以再一次被放入另一个也具有自己的数据的列表`z`中。列表中的这个列表被称为`嵌套列表`,这就是数组的声明方式,我们将在后面看到。**这是和很多其他计算机语言不同的地方,不要求列表的元素是相同类型,因此编程的时候会非常方便,这也是为什么Python对人类比较友好**" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -207,10 +207,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "如果您不了解在python中索引是如何工作的,那么在嵌套列表中索引可能会非常令人困惑。所以让我们把它分解一下,然后得出一个结论。\n", + "如果您不了解在Python中索引是如何工作的,那么在嵌套列表中索引可能会非常令人困惑。所以让我们把它分解一下,然后得出一个结论。\n", "\n", "让我们在上述嵌套列表中获得数据'apple'。\n", - "首先在索引为0处,有一个列表['apple','orange'] 而在索引为1处有另外一个列表['carrot','potato'] 。因此z[0] 应该给我们第一个包含'apple'的列表。" + "首先在索引为0处,有一个列表`['apple','orange']` 而在索引为1处有另外一个列表`['carrot','potato']` 。因此z[0] 应该给我们第一个包含'apple'的列表。" ] }, { @@ -310,36 +310,36 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "[0, 1, 2, 3]\n", - "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n", - "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n" + "[3, 2, 3]\n", + "[2, 3, 2, 3, 4, 5, 6, 7, 8, 9]\n", + "[2, 3, 2, 3, 4, 5, 6, 7, 8, 9]\n" ] } ], "source": [ - "num = [0,1,2,3,4,5,6,7,8,9]\n", - "print(num[0:4])\n", + "num = [2,3,2,3,4,5,6,7,8,9]\n", + "print(num[1:4])\n", "print(num[0:])\n", "print(num[:])" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "[0, 1, 2, 3]\n", + "[2, 3, 2, 3]\n", "[4, 5, 6, 7, 8, 9]\n" ] } @@ -358,16 +358,16 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[0, 3, 6]" + "[2, 3, 6]" ] }, - "execution_count": 12, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -380,7 +380,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### 1.3 构造列表函数" + "### 1.3 列表的内置函数" ] }, { @@ -493,7 +493,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 18, "metadata": {}, "outputs": [], "source": [ @@ -596,7 +596,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ @@ -605,7 +605,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -631,7 +631,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ @@ -640,7 +640,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -673,7 +673,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -681,11 +681,12 @@ "output_type": "stream", "text": [ "Earth\n", - "Air\n" + "Jet\n" ] } ], "source": [ + "names = ['Earth','Jet', 'Air','Fire','Water']\n", "print(max(names, key=len))\n", "print(min(names, key=len))" ] @@ -703,7 +704,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -712,7 +713,7 @@ "['h', 'e', 'l', 'l', 'o']" ] }, - "execution_count": 26, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -730,7 +731,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 44, "metadata": {}, "outputs": [], "source": [ @@ -739,7 +740,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 45, "metadata": {}, "outputs": [ { @@ -764,7 +765,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 46, "metadata": {}, "outputs": [ { @@ -773,7 +774,7 @@ "3" ] }, - "execution_count": 29, + "execution_count": 46, "metadata": {}, "output_type": "execute_result" } @@ -791,7 +792,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 47, "metadata": {}, "outputs": [], "source": [ @@ -800,7 +801,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 48, "metadata": {}, "outputs": [ { @@ -825,7 +826,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 49, "metadata": {}, "outputs": [ { @@ -850,7 +851,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 50, "metadata": {}, "outputs": [ { @@ -859,7 +860,7 @@ "0" ] }, - "execution_count": 33, + "execution_count": 50, "metadata": {}, "output_type": "execute_result" } @@ -870,7 +871,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 51, "metadata": {}, "outputs": [ { @@ -880,7 +881,7 @@ "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mlst\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m999\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mlst\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m999\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mValueError\u001b[0m: 999 is not in list" ] } @@ -898,18 +899,14 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 52, "metadata": {}, "outputs": [ { - "ename": "NameError", - "evalue": "name 'lst' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mlst\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minsert\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m5\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'name'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlst\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mNameError\u001b[0m: name 'lst' is not defined" + "name": "stdout", + "output_type": "stream", + "text": [ + "[1, 1, 4, 8, 7, 'name', 1, [5, 4, 2, 8], 5, 4, 2, 8]\n" ] } ], @@ -927,7 +924,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 53, "metadata": {}, "outputs": [ { @@ -952,16 +949,16 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 54, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[1, 1, 4, 8, 7, 'name', 1, [5, 4, 2, 8], 5, 4]" + "[1, 1, 4, 8, 7, 'Python', 1, [5, 4, 2, 8], 5, 4, 2]" ] }, - "execution_count": 37, + "execution_count": 54, "metadata": {}, "output_type": "execute_result" } @@ -980,7 +977,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 55, "metadata": {}, "outputs": [ { @@ -989,7 +986,7 @@ "4" ] }, - "execution_count": 38, + "execution_count": 55, "metadata": {}, "output_type": "execute_result" } @@ -1000,14 +997,42 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1, 1, 8, 7, 'Python', 1, [5, 4, 2, 8], 5, 4, 2]\n" + ] + }, + { + "data": { + "text/plain": [ + "4" + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "print(lst)\n", + "lst.pop(-2)" + ] + }, + { + "cell_type": "code", + "execution_count": 58, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "[1, 1, 8, 7, 'name', 1, [5, 4, 2, 8], 5, 4]\n" + "[1, 1, 8, 7, 'Python', 1, [5, 4, 2, 8], 5, 2]\n" ] } ], @@ -1024,19 +1049,19 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 60, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "[1, 1, 8, 7, 1, [5, 4, 2, 8], 5, 4]\n" + "[1, 1, 8, 7, 1, [5, 4, 2, 8], 5, 2]\n" ] } ], "source": [ - "lst.remove('name')\n", + "lst.remove('Python')\n", "print(lst)" ] }, @@ -1049,15 +1074,15 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 61, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "[1, 4, 7, 1, [5, 4, 2, 8], 5, 4, 2]\n", - "[1, 7, 1, [5, 4, 2, 8], 5, 4, 2]\n" + "[1, 1, 8, 7, 1, [5, 4, 2, 8], 5, 2]\n", + "[1, 8, 7, 1, [5, 4, 2, 8], 5, 2]\n" ] } ], @@ -1076,14 +1101,14 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 62, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "[4, 5, [5, 4, 2, 8], 1, 7, 8, 1, 1]\n" + "[2, 5, [5, 4, 2, 8], 1, 7, 8, 1]\n" ] } ], @@ -1103,7 +1128,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 63, "metadata": {}, "outputs": [ { @@ -1129,7 +1154,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 64, "metadata": {}, "outputs": [ { @@ -1154,7 +1179,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 65, "metadata": {}, "outputs": [ { @@ -1213,12 +1238,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "大多数新的python程序员都会犯这个错误,即对象的赋值和拷贝的差异。考虑以下的例子:" + "大多数新的python程序员都会犯这个错误,即**对象的赋值和拷贝的差异**。考虑以下的例子:" ] }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 66, "metadata": {}, "outputs": [], "source": [ @@ -1227,7 +1252,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 67, "metadata": {}, "outputs": [ { @@ -1239,7 +1264,7 @@ } ], "source": [ - "listb = lista\n", + "listb = lista # 对象赋值\n", "print(listb)" ] }, @@ -1252,7 +1277,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 68, "metadata": {}, "outputs": [ { @@ -1273,7 +1298,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 69, "metadata": {}, "outputs": [ { @@ -1299,7 +1324,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 71, "metadata": {}, "outputs": [], "source": [ @@ -1308,7 +1333,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 72, "metadata": {}, "outputs": [ { @@ -1326,7 +1351,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 73, "metadata": {}, "outputs": [ { @@ -1347,7 +1372,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 74, "metadata": {}, "outputs": [ { @@ -1419,7 +1444,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 75, "metadata": {}, "outputs": [], "source": [ @@ -1436,7 +1461,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 76, "metadata": {}, "outputs": [ { @@ -1445,7 +1470,7 @@ "(27,)" ] }, - "execution_count": 53, + "execution_count": 76, "metadata": {}, "output_type": "execute_result" } @@ -1463,7 +1488,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 79, "metadata": {}, "outputs": [ { @@ -1472,7 +1497,7 @@ "(27, 27)" ] }, - "execution_count": 54, + "execution_count": 79, "metadata": {}, "output_type": "execute_result" } @@ -1490,7 +1515,7 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 80, "metadata": { "scrolled": true }, @@ -1520,7 +1545,7 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 81, "metadata": {}, "outputs": [ { @@ -1547,7 +1572,7 @@ }, { "cell_type": "code", - "execution_count": 57, + "execution_count": 82, "metadata": {}, "outputs": [], "source": [ @@ -1593,7 +1618,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### 2.2 内置元组函数" + "### 2.2 元组内置函数" ] }, { @@ -1668,7 +1693,7 @@ }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 83, "metadata": {}, "outputs": [ { @@ -1686,7 +1711,7 @@ }, { "cell_type": "code", - "execution_count": 62, + "execution_count": 84, "metadata": {}, "outputs": [ { @@ -1703,6 +1728,24 @@ ] }, { + "cell_type": "code", + "execution_count": 86, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{1, 2, 3, 4}\n" + ] + } + ], + "source": [ + "set1 = set((1,2,2,3,3,4))\n", + "print(set1)" + ] + }, + { "cell_type": "markdown", "metadata": {}, "source": [ @@ -1718,7 +1761,7 @@ }, { "cell_type": "code", - "execution_count": 63, + "execution_count": 87, "metadata": {}, "outputs": [], "source": [ @@ -1727,7 +1770,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 88, "metadata": {}, "outputs": [], "source": [ @@ -1743,7 +1786,7 @@ }, { "cell_type": "code", - "execution_count": 65, + "execution_count": 89, "metadata": {}, "outputs": [ { @@ -1752,7 +1795,7 @@ "{1, 2, 3, 4, 5}" ] }, - "execution_count": 65, + "execution_count": 89, "metadata": {}, "output_type": "execute_result" } @@ -1770,7 +1813,7 @@ }, { "cell_type": "code", - "execution_count": 66, + "execution_count": 90, "metadata": {}, "outputs": [ { @@ -1786,7 +1829,7 @@ "{0, 1, 2, 3}" ] }, - "execution_count": 66, + "execution_count": 90, "metadata": {}, "output_type": "execute_result" } @@ -1806,7 +1849,7 @@ }, { "cell_type": "code", - "execution_count": 67, + "execution_count": 91, "metadata": {}, "outputs": [ { @@ -1815,7 +1858,7 @@ "{2, 3}" ] }, - "execution_count": 67, + "execution_count": 91, "metadata": {}, "output_type": "execute_result" } @@ -1833,21 +1876,31 @@ }, { "cell_type": "code", - "execution_count": 68, + "execution_count": 93, "metadata": {}, "outputs": [ { + "name": "stdout", + "output_type": "stream", + "text": [ + "{0, 1, 2, 3}\n", + "{2, 3, 4, 5}\n" + ] + }, + { "data": { "text/plain": [ "{0, 1}" ] }, - "execution_count": 68, + "execution_count": 93, "metadata": {}, "output_type": "execute_result" } ], "source": [ + "print(set1)\n", + "print(set2)\n", "set1.difference(set2)" ] }, @@ -1860,7 +1913,7 @@ }, { "cell_type": "code", - "execution_count": 59, + "execution_count": 94, "metadata": {}, "outputs": [ { @@ -1869,7 +1922,7 @@ "{0, 1, 4, 5}" ] }, - "execution_count": 59, + "execution_count": 94, "metadata": {}, "output_type": "execute_result" } @@ -1887,7 +1940,7 @@ }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 95, "metadata": {}, "outputs": [ { @@ -1896,7 +1949,7 @@ "False" ] }, - "execution_count": 60, + "execution_count": 95, "metadata": {}, "output_type": "execute_result" } @@ -1907,18 +1960,40 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 96, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 96, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "set2.isdisjoint(set1)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 97, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 97, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "set2.issuperset(set1)" ] @@ -1932,9 +2007,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 98, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{1, 2, 3}\n" + ] + } + ], "source": [ "set1.pop()\n", "print(set1)" @@ -1949,9 +2032,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 99, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "{1, 3}" + ] + }, + "execution_count": 99, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "set1.remove(2)\n", "set1" @@ -1966,7 +2060,7 @@ }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 100, "metadata": {}, "outputs": [ { @@ -1975,7 +2069,7 @@ "set()" ] }, - "execution_count": 61, + "execution_count": 100, "metadata": {}, "output_type": "execute_result" } diff --git a/0_python/4_Data_Structure_2.ipynb b/0_python/4_Data_Structure_2.ipynb index 659bfba..62bd8e8 100644 --- a/0_python/4_Data_Structure_2.ipynb +++ b/0_python/4_Data_Structure_2.ipynb @@ -4,6 +4,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ + "# 数据结构2\n", + "\n", "## 1. 字符串" ] }, @@ -16,17 +18,9 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 1, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "10\n" - ] - } - ], + "outputs": [], "source": [ "String0 = 'Taj Mahal is beautiful'\n", "String1 = \"Taj Mahal is beautiful\"\n", @@ -37,7 +31,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -67,7 +61,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -100,19 +94,21 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ + "Taj Mahal is beautiful\n", "7\n", "-1\n" ] } ], "source": [ + "print(String0)\n", "print(String0.find('al'))\n", "print(String0.find('am'))" ] @@ -126,7 +122,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -150,7 +146,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -176,7 +172,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -201,7 +197,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -210,7 +206,7 @@ "' Taj Mahal is beautiful '" ] }, - "execution_count": 10, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -228,7 +224,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -237,7 +233,7 @@ "'------------------------Taj Mahal is beautiful------------------------'" ] }, - "execution_count": 11, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -255,7 +251,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -264,7 +260,7 @@ "'00000000Taj Mahal is beautiful'" ] }, - "execution_count": 12, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -282,7 +278,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -313,7 +309,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -331,7 +327,7 @@ "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mString0\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Taj'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mString0\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Mahal'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mString0\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Mahal'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mString0\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Taj'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mString0\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Mahal'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mString0\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Mahal'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mValueError\u001b[0m: substring not found" ] } @@ -351,7 +347,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -375,7 +371,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -401,7 +397,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -427,7 +423,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -436,7 +432,7 @@ "'*a_a-'" ] }, - "execution_count": 16, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -447,7 +443,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -456,7 +452,7 @@ "'1\\n2'" ] }, - "execution_count": 6, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -481,7 +477,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 21, "metadata": {}, "outputs": [ { @@ -509,7 +505,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -534,7 +530,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -666,7 +662,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 24, "metadata": {}, "outputs": [], "source": [ @@ -682,7 +678,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 25, "metadata": {}, "outputs": [ { @@ -691,7 +687,7 @@ "'hello'" ] }, - "execution_count": 17, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } @@ -709,7 +705,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 26, "metadata": {}, "outputs": [], "source": [ @@ -718,7 +714,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 27, "metadata": {}, "outputs": [ { @@ -727,7 +723,7 @@ "' ***----hello---******* '" ] }, - "execution_count": 21, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -799,7 +795,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "字典更像数据库,因为在这里你可以用用户定义的字符串索引特定的序列。" + "词典更像数据库,因为在这里你可以用用户定义的字符串索引特定的序列。" ] }, { @@ -811,7 +807,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 28, "metadata": {}, "outputs": [ { @@ -837,14 +833,14 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "{'OneTwo': 12, 'One': 1}\n" + "{'One': 1, 'OneTwo': 12}\n" ] } ], @@ -856,14 +852,14 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "{'key2': [1, 2, 4], 'key1': 1, 3: (1, 4, 6)}\n" + "{'key1': 1, 'key2': [1, 2, 4], 3: (1, 4, 6)}\n" ] } ], @@ -881,7 +877,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 31, "metadata": {}, "outputs": [ { @@ -905,7 +901,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 32, "metadata": {}, "outputs": [], "source": [ @@ -922,14 +918,14 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "{'One': 1, 'Four': 4, 'Three': 3, 'Five': 5, 'Two': 2}\n" + "{'One': 1, 'Two': 2, 'Three': 3, 'Four': 4, 'Five': 5}\n" ] } ], @@ -983,14 +979,18 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 34, "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "{}\n" + "ename": "NameError", + "evalue": "name 'a1' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0ma1\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclear\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mNameError\u001b[0m: name 'a1' is not defined" ] } ], @@ -1008,14 +1008,14 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "{'One': 1, 'Four': 4, 'Three': 3, 'Five': 5, 'Two': 2}\n" + "{'One': 1, 'Two': 2, 'Three': 3, 'Four': 4, 'Five': 5}\n" ] } ], @@ -1052,16 +1052,16 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "dict_values([1, 4, 3, 5, 2])" + "dict_values([1, 2, 3, 4, 5])" ] }, - "execution_count": 10, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" } @@ -1079,16 +1079,16 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "dict_keys(['One', 'Four', 'Three', 'Five', 'Two'])" + "dict_keys(['One', 'Two', 'Three', 'Four', 'Five'])" ] }, - "execution_count": 11, + "execution_count": 37, "metadata": {}, "output_type": "execute_result" } @@ -1106,7 +1106,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 38, "metadata": {}, "outputs": [ { @@ -1114,10 +1114,10 @@ "output_type": "stream", "text": [ "[ One] 1\n", - "[ Four] 4\n", + "[ Two] 2\n", "[ Three] 3\n", - "[ Five] 5\n", - "[ Two] 2\n" + "[ Four] 4\n", + "[ Five] 5\n" ] } ], @@ -1137,15 +1137,18 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 41, "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'One': 1, 'Three': 3, 'Five': 5, 'Two': 2}\n", - "4\n" + "ename": "KeyError", + "evalue": "'Four'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0ma2\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0ma1\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpop\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Four'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyError\u001b[0m: 'Four'" ] } ], diff --git a/0_python/5_Control_Flow.ipynb b/0_python/5_Control_Flow.ipynb index ddfcb6e..4d44307 100644 --- a/0_python/5_Control_Flow.ipynb +++ b/0_python/5_Control_Flow.ipynb @@ -180,7 +180,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### 4.1 For" + "### 4.1 for" ] }, { @@ -307,7 +307,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### 4.2 While" + "### 4.2 while" ] }, { @@ -363,7 +363,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 5. Break" + "## 5. break" ] }, { @@ -404,7 +404,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 6. Continue" + "## 6. continue" ] }, { @@ -449,14 +449,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 7. List Comprehensions" + "## 7. 列表推导(List Comprehensions)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Python使用列表理解式,用一行代码就可以很容易地生成所需的列表。例如,如果我需要生成27的倍数,我用For loop写代码," + "Python可以使用列表推导模式,用一行代码就可以很容易地生成所需的列表。例如,如果我需要生成27的倍数,用`for`循环缩写的代码如下:" ] }, { @@ -484,7 +484,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "由于你需要生成另一个列表,所以列表理解是解决这个问题的更有效的方法。" + "由于你需要生成另一个列表,所以列表推导是解决这个问题的更有效的方法(建议大家使用这样的方式)" ] }, { diff --git a/0_python/README.md b/0_python/README.md index a91dcad..78e3308 100644 --- a/0_python/README.md +++ b/0_python/README.md @@ -1,7 +1,7 @@ # 简明Python教程 (90分钟学会Python) -Python 是一门上手简单、功能强大、通用型的脚本编程语言。Python 类库极其丰富,这使得 Python 几乎无所不能,网站开发、软件开发、大数据分析、网络爬虫、机器学习等都不在话下。Python最主要的优点是使用人类的思考方式来完成大部分的工作,大多数时候使用封装好的库快速完成给定的任务,虽然可能执行的效率不一定很高,但是极大的缩短了程序设计、编写、调试的时间,因此非常适合快速试错。 +Python 是一门上手简单、功能强大、通用型的脚本编程语言。Python 类库极其丰富,这使得 Python 几乎无所不能,网站开发、软件开发、大数据分析、网络爬虫、机器学习等都不在话下。Python最主要的优点是使用人类的思考方式来编写程序,大多数情况下使用封装好的库能够快速完成给定的任务,虽然执行的效率不一定很高,但是极大的缩短了程序设计、编写、调试的时间,因此非常适合快速尝试、试错。 本教程来自[IPython Notebooks to learn Python](https://github.com/rajathkmp/Python-Lectures),将其中部分示例代码转化成Python3。关于Python的按照可以自行去网络上查找相关的资料,或者参考[安装Python环境](../tips/InstallPython.md)。 diff --git a/2_knn/knn_classification.ipynb b/2_knn/knn_classification.ipynb index 56890f5..ec88e27 100644 --- a/2_knn/knn_classification.ipynb +++ b/2_knn/knn_classification.ipynb @@ -7,39 +7,40 @@ "# kNN Classification\n", "\n", "\n", - "K最近邻(k-Nearest Neighbor,kNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路是:***如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别***。KNN方法虽然从原理上也依赖于极限定理,但在类别决策时,只与极少量的相邻样本有关。由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合。\n", + "K最近邻(k-Nearest Neighbor,kNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路是:***如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别***。kNN方法虽然从原理上也依赖于极限定理,但在类别决策时,只与极少量的相邻样本有关。由于kNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,kNN方法较其他方法更为适合。\n", "\n", - "kNN算法不仅可以用于分类,还可以用于回归。通过找出一个样本的k个最近邻居,将这些邻居的属性的平均值赋给该样本,就可以得到该样本的属性。更有用的方法是将不同距离的邻居对该样本产生的影响给予不同的权值(weight),如权值与距离成正比(组合函数)。\n", + "kNN算法不仅可以用于分类,还可以用于回归。通过找出一个样本的`k`个最近邻居,将这些邻居的属性的平均值赋给该样本,就可以得到该样本的属性。更有用的方法是将不同距离的邻居对该样本产生的影响给予不同的权值(weight),如权值与距离成正比(组合函数)。\n", "\n", - "该算法在分类时有个主要的不足是,当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数。在这种情况下可能会产生误判的结果。因此我们需要减少数量对运行结果的影响。可以采用权值的方法(和该样本距离小的邻居权值大)来改进。该方法的另一个不足之处是计算量较大,因为对每一个待分类的文本都要计算它到全体已知样本的距离,才能求得它的K个最近邻点。目前常用的解决方法是事先对已知样本点进行剪辑,事先去除对分类作用不大的样本。该算法比较适用于样本容量比较大的类域的自动分类,而那些样本容量较小的类域采用这种算法比较容易产生误分。\n", + "该算法存在的问题:\n", + "1. 当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数。在这种情况下可能会产生误判的结果。因此我们需要减少数量对运行结果的影响。可以采用权值的方法(和该样本距离小的邻居权值大)来改进。\n", + "2. 计算量较大,因为对每一个待分类的数据都要计算它到全体已知样本的距离,才能求得它的K个最近邻点。目前常用的解决方法是事先对已知样本点进行剪辑,事先去除对分类作用不大的样本。该算法比较适用于样本容量比较大的类域的自动分类,而那些样本容量较小的类域采用这种算法比较容易产生误分。\n", "\n", - "k-NN可以说是一种最直接的用来分类未知数据的方法。基本通过下面这张图跟文字说明就可以明白K-NN是干什么的\n", + "kNN可以说是一种最直接的用来分类未知数据的方法。基本通过下面这张图跟文字说明就可以明白kNN是干什么的\n", "![knn](images/knn.png)\n", "\n", - "简单来说,k-NN可以看成:**有那么一堆你已经知道分类的数据,然后当一个新数据进入的时候,就开始跟训练数据里的每个点求距离,然后挑离这个训练数据最近的K个点看看这几个点属于什么类型,然后用少数服从多数的原则,给新数据归类**。\n" + "简单来说,kNN可以看成:**有那么一堆你已经知道分类的数据,然后当一个新数据进入的时候,就开始跟训练数据里的每个点求距离,然后挑选这个训练数据最近的K个点,看看这几个点属于什么类型,然后用少数服从多数的原则,给新数据归类**。\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## 算法步骤:(FIXME: 把流程再细化一下,循环需要体现的更好)\n", + "## 1. 算法步骤:\n", "\n", - "* step.1---导入训练样本\n", - "* step.2---将样本的特征转化为数据\n", - "* step.3---计算未知样本和训练样本的距离dist\n", - "* step.4---记录位置样本和训练样本得距离及其所属于得分类\n", - "* step.5---重复步骤2、3,直到未知样本和所有训练样本的距离都算完\n", - "* step.6---将训练样本按照与未知样本的距离进行排序,找出其中K个最近的样本\n", - "* step.7---统计K-最近邻样本中每个类标号出现的次数\n", - "* step.8---选择出现频率最大的类标号作为未知样本的类标号" + "1. 准备数据,对数据进行预处理;\n", + "2. 计算测试数据与各个训练数据之间的**距离**;\n", + "3. 按照距离的递增关系进行排序;\n", + "4. 选取距离最小的`k`个点;\n", + "5. 确定前`k`个点所在类别的出现频率;\n", + "6. 返回前`k`个点中出现频率最高的类别作为测试数据的预测分类。\n", + "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## 生成数据" + "## 2. 生成数据" ] }, { @@ -119,7 +120,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Program" + "## 3. Program" ] }, { @@ -208,7 +209,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## sklearn program" + "## 4. sklearn program" ] }, { @@ -312,6 +313,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ + "## 5. 深入思考\n", + "\n", + "* 如果输入的数据非常多,怎么快速进行距离计算?\n", + " - kd-tree\n", + " - Fast Library for Approximate Nearest Neighbors (FLANN)\n", + "* 如何选择最好的`k`?\n", + " - https://zhuanlan.zhihu.com/p/143092725" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ "## References\n", "* [Digits Classification Exercise](http://scikit-learn.org/stable/auto_examples/exercises/plot_digits_classification_exercise.html)\n", "* [knn算法的原理与实现](https://zhuanlan.zhihu.com/p/36549000)" @@ -334,7 +348,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.8" + "version": "3.6.9" } }, "nbformat": 4, diff --git a/3_kmeans/1-k-means.ipynb b/3_kmeans/1-k-means.ipynb index 6de3fda..27c5cbf 100644 --- a/3_kmeans/1-k-means.ipynb +++ b/3_kmeans/1-k-means.ipynb @@ -955,7 +955,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.8" + "version": "3.6.9" } }, "nbformat": 4,