本文假设你已经有一门面向对象编程语言基础,如 Java
等,且希望快速了解并使用 Python
语言。本文对重点语法和数据结构以及用法进行详细说明,同时对一些难以理解的点进行了图解,以便大家快速入门。一些较偏的知识点在大家入门以后根据实际需要再查询 官方文档 即可,学习时切忌胡子眉毛一把抓。同时,一定要跟着示例多动手写代码。学习一门新语言时推荐大家同时去刷 leetcode
,一来可以快速熟悉新语言的使用,二来也为今后找工作奠定基础。推荐直接在网页上刷 leetcode
,因为面试的时候一般会让你直接在网页编写代码。 leetcode
刷题路径可以按我推荐的方式去刷。以下代码中,以 >>>
和 ...
开头的行是 交互模式 下的代码部分, >?
开头的行是 交互模式 下的输入,其他行是输出。 python
代码中使用 #
开启行注释。
编程前菜
>>> a, b = 0, 1 ... while a < 10: ... print(a, end=', ') ... a, b = b, a+b # 多重赋值,右表达式在赋值前就已经求值了 ... 0, 1, 1, 2, 3, 5, 8, # Fibonacci series
如上为典型的 python
代码块, python
中的代码行无需以 ;
结尾,控制块以缩进标识开始和结束。 python
中的比较操作符与 C
和 Java
类似,需要注意的是: ==
比较两个引用所指对象的值是否相同,要比较两个引用是否指向同一个对象需要使用 is
关键字,也可以通过 id
方法查看两个引用所指对象的id是否相同来判断。
>>> a = [1, 2, 3] ... b = [1, 2, 3] ... print('a = b:', a == b) a = b: True # a, b 中元素的 个数相同 且 值依次相等 >>> a is b False # a, b 没指向同一个对象 >>> c = a >>> c is a # a, c 指向同一个对象 True >>> id(c) 2827535985280 >>> id(a) 2827535985280 # c, a 所指对象id相同,故指向同一对象
流程控制
if 语句
Python
中的 if
语句包含: if
、 elif
以及 else
子句, elif
等同于 C
或 Java
中的 else if
:
>>> x = int(input("input a digit: ")) ... if a < 0: ... print("Negative") ... elif a == 0: ... print("Zero") ... else: ... print("Positive") ... input a digit: >? 10 Positive
for 和 while 语句
Python
中的 for
语句通常用来遍历列表和字符串等容器,它不能像 C
和 Java
中那样通过在for语句中添加条件判断和变量递增规则来控制for循环的次数:
>>> digits = [1, 2, 3] ... for x in digits: # 遍历list ... print(x, end=", ") ... 1, 2, 3, >>> s = "python" ... for ch in s: # 遍历字符串 ... print(ch, end=" ") ... p y t h o n
由于 Python
中 for
语句的这种“缺陷”,我们如何像 C
和 Java
那样在 for
语句中利于下标去遍历 list
呢?首先我们可以利用 while
循环:
# while中根据下标遍历list >>> digits = [1, 2, 3] >>> i = 0 ... while i < len(digits): ... print(digits[i], end=" ") ... i = i + 1 ... 1 2 3 # while中根据下标修改list >>> digits = [1, 2, 3] >>> i = 0 ... while i < len(digits): ... if digits[i] == 2: ... digits[i] = 8 ... i = i + 1 ... >>> print(digits) [1, 8, 3]
其次,我们还可以利用 range() 函数和 enumerate() 函数:
# 使用range,以0为起点,len为终点(不包含),以1为步长创建下标序列 >>> digits = [1, 2, 3] ... for i in range(len(digits)): ... print(digits[i], end=" ") ... 1 2 3 >>> digits = [1, 2, 3] ... for i in range(len(digits)): ... if digits[i] == 2: ... digits[i] = 8 ... print(digits) [1, 8, 3] # 使用enumerate,创建枚举序列,可以同时取出位置索引和对应的值 >>> digits = [1, 2, 3] ... for i, v in enumerate(digits): ... print(i, v) ... 0 1 1 2 2 3 >>> digits = [1, 2, 3] ... for i, v in enumerate(digits): ... if v &#