之前就在公众号等众多途径了解到廖雪峰老师的课程,也下载了相关的资料,就是一直没有去好好练习,我发现不练习根本没有什么用,之前学R的时候觉得自己好像都学会了,但是到了真正要自己完成任务的时候,代码一个都敲不出来,然后电脑上东西又多又杂,找起来特别麻烦。
还是去曾老师的博客找到源代码。
所以吸取教训,每学一个就记录下来,放在好找的地方。
参考学习资料Python教程 - 廖雪峰的官方网站
廖老师的网站有链接,他有个小白入门实战的工具推荐 awesome-python3-webapp
这就是为我量身定制的教程啊(虽然第三条不符合但是不影响)。
如果你是小白用户,满足以下条件:
- 会使用电脑,但从来没写过程序;
- 还记得初中数学学的方程式和一点点代数知识;
- 想从编程小白变成专业的软件架构师;
- 每天能抽出半个小时学习。
上面这个推荐他做了2次推广,一个是5年前,一个是6年前的,找到最新的教程是持续在更新的这个learn-python3
这里面有超级多的例子,而且由于Python语法的写作原则,这些代码都非常好理解,有了这个代码再结合马哥的视频,简直完美了。
另一就是目前有的资源:
http://yun.itheima.com/map/53.html
上周学习认识Python,了解了元素(和向量类似),学习了while循环,函数等基础概念
今天学习列表,元祖等相关基础:
这里的函数跟R的函数基本上是一样的,函数的集合在R里面叫包,这里叫模块,基本上也一样,调用R包用libary,调用模块就用import,在R中直接用包里的函数名,而Python里面稍微有点差别,有分别针对列表(相当于R里面的向量或者列表)等对应的函数,函数是通用的,但是函数名基本和R里面一样的,比如排序用sort,等等,调用起来更便利一点:
- 调用的时候模式举例:列表.函数名(参数)
- 定义列表:list=["","",...]
定义完可以进行增删改,和R的字符串取子集的操作类似,就是索引起点位置不同,R里面从1开始,P里面是以0开始。 - 定义元祖:Tuple=("","",...)
定义完是不可以进行增删改的。
关键字从黑马教程的33现在变成了35个,多了'async', 'await'
#在终端里面使用ipython3进入python3的解释器,就可以进行交互式学习(指令和shell很多类似,可用tab补齐)
$ ipython3
Python 3.7.4 (default, Aug 13 2019, 15:17:50)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.9.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: import keyword
In [2]: print(keyword.kwlist)
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
In [3]: len(keyword.kwlist)
Out[3]: 35
定义元祖后可以同列表一样进行向量取子集的操作:
In [4]: info_tuple = ("zhangsan", 18, 1.75)
In [5]: type(info_tuple)
Out[5]: tuple
In [6]: info_tuple[0]
Out[6]: 'zhangsan'
In [7]: info_tuple[2]
Out[7]: 1.75
In [8]: empty_tuple = ()
In [9]: type(empty_tuple)
Out[9]: tuple
In [10]: single_tuple = (5)
In [11]: type(single_tuple)
Out[11]: int
In [12]: single_tuple = (5,)
In [13]: type(single_tuple)
Out[13]: tuple
基本上和R的操作是类似的,只是这个定义的类型有点差异,定义只有一个元素的元祖时需要在后面添加一个逗号,否则就变成了整型而不是元祖了,类型是根据括号里的元素来决定的。
在ipython3中练习
In [14]: info = ()
In [15]: info.
File "<ipython-input-15-b65a21e93d05>", line 1
info.
^
SyntaxError: invalid syntax
不知道怎么出现这个语法错误了。后来发现视频中老师默认的用的是2.4版本的,估计是解释器版本的原因导致的。
- 之后学习了除了列表外一个最常用的数据类型,字典
- 定义方式:){key:value},key的类型必须一致相当于索引,值的类型可以多样
In [7]: xiaoming = {"name": "xiaoming",
...: "age": 18,
...: "gender": True
...: "height": 1.75
...: "weight": 75.5}
File "<ipython-input-7-3db4e70eab53>", line 4
"height": 1.75
^
SyntaxError: invalid syntax
#练习的时候打错了,少打了逗号“,”由于我这个版本的解释器不能识别中文,可能需要更改些设置,我就输入了拼音
In [8]: xiaoming = {"name": "xiaoming",
...: "age": 18,
...: "gender": True,
...: "height": 1.75,
...: "weight": 75.5}
In [9]: print(xiaoming)
{'name': 'xiaoming', 'age': 18, 'gender': True, 'height': 1.75, 'weight': 75.5}
In [10]: print(xiaoming["name"])
xiaoming
In [11]: print(xiaoming["xueli"] = "benke")
File "<ipython-input-11-2c03098e9c4c>", line 1
print(xiaoming["xueli"] = "benke")
^
SyntaxError: keyword can't be an expression
#一行一个命令,字典的增删和列表类似,通过索引来完成
In [12]: xiaoming["xueli"] = "benke"
In [13]: print(xiaoming)
{'name': 'xiaoming', 'age': 18, 'gender': True, 'height': 1.75, 'weight': 75.5, 'xueli': 'benke'}
In [14]: xiaoming.pop("name")
Out[14]: 'xiaoming'
In [15]: print(xiaoming)
{'age': 18, 'gender': True, 'height': 1.75, 'weight': 75.5, 'xueli': 'benke'}
一行一个命令,字典的增删和列表类似,通过索引来完成。
不想重复造轮子了,在知乎上看到一个R&Python数据处理的系列,对比2个工具的效果,可以说是势均力敌,各有优势。
12-18日更新
我在自己的羽雀端做了相应的摘录https://www.yuque.com/chelsealp/kb
参考学习资料:R&Python Data Science 系列:数据处理系列;
这个素材供者还关注了一个从零开始写Python爬虫的专栏,以后也可以学习一下
https://zhuanlan.zhihu.com/p/29195069