Python Good to knows
在Google Colaboratory 可以使用一些Linux命令,比如
安装一些Colab上没有的包
2. 在Colab上可以用#@title +Title做标题
3. 在Python里可以 print(1 or False)这样的语句,它返回的是 第一个不是false的值
4. 对于string的一些简便操作
5. Python List的elements可以不相同,但是np array就不行;比如可以有一个
6. Python List是mutable的
7. +号可以用来连接字符串,也可以用来连接两个list
8. list2=list1[:]是shallow copy,lst4 = lst2.copy()是hard copy,lst5 = lst2是copy reference
9. Python list或string的切片(slicing)的规矩是[start(inclusive) : end(exclusive) : step]
10. lst[::-1]可以reverse a list
11. slicing的过程也可以改变数值,比如lst[2:4] = [3, 2]
12. Python的Dictionary
如果我们想要索引一个成绩,用两个list的话效果是这样的 时间复杂度是O(n)
用dic就是这样的效果 {key:value} key必须unique,但是value可以是任意一个东西
13. 不想看那些warnings
14. numpy的random seed和python的random seed不是一个东西,所以 random.seed = xxx 和np.random.seed=xxx 也是两个东西
15. \t \n \r 这些C语言的东西在Python里照样能用,\t可以自动对齐
16. 在Python中使用非ASICC字符,比如 中文
17. Python的list支持各种类型,也支持混着,所以使用的时候要留意判断
18. remove list by index 用的是del; O(n)的操作,因为后面的要往左移,但是假如本来要删除的就是最后一个,那O(1)
而list.remove() 是remove by value,而且是删除第一个出现的,O(n)的操作
19. 看懂python doc - [, xxx]代表变量可忽略
*arg 代编不确定个数的参数,进入函数之后是一个tuple
**args 更灵活,通过var_name=var_value调用,进入函数后是dict
20. 在函数括号传的值里可以放default value,在没有值传进来的时候就用default,有值传进来的时候就用传入的值
21. 在python2里 range()占O(n)的空间,xrange()占O(1)的空间
22. 如果有一些column在打印的时候被...了 想看到全部,用
或者用
23. 针对整个Jupiter notebook的打印格式,可以用
24. Python有个内置函数,enumerate(), 可以帮助遍历,它可以获取index和value
enumerate还可以接收第二个参数,用于指定索引起始值
还可以用enumerate统计文件的行数
25. 面向对象和面向过程
面向过程:sequential 把问题分成多个步骤,按顺序执行;打开冰箱,放食物,关上冰箱
面向对象OOP:封装,冰箱的操作:打开;存储;关闭 食物的操作:名字;大小
面试Amazon考过,OOP,停车场
练习方式:sorting之类的改写成oop的形式
26. class内部如果有多个def,那么顺序可以不和实现一样,但是如果是class外部的,要先定义先使用的
27. if __name__="__main__" Python的启动函数,这个文件直接被执行的时候 会执行main后面的 ;如果被作为外部文件导入(比如 from **.py import *) 就不执行main的
意味着 只有在这个文件内部的才会执行
27. 程序运行时,stack存的是reference,heap存的是value
28. 单双下划线:
__foo__ 定义的是特殊方法,一般是系统builtin的名字,比如__init__() 或者__name__
_foo 表示protected的变量,只允许其本身和子类访问,不能外部调用,不能用于 from module import *
__foo 表示private的变量,只能允许本身的访问,不能被子类访问,不能继承,不能被外部访问
So there it is, you just call the global function len()
on the list
or tuple
and you get its size / length.
Did you expect to have something like list.len()
or tuple.len()
instead? Actually there is something like that, but it is called list.__len__()
or tuple.__len__()
. And what len()
really does is, it takes the object and tries to call the objects's __len__()
method. So essentially, len()
works only on objects that has a __len__()
method. If you have a custom object that has the __len__()
method, you can call len()
even on that.
So you learnt: to get the size or length of a list
or tuple
in Python (you probably didn't mean Python array
), you just call the len()
function on the object.
Last updated