python3基础
一、关于代码#!/usr/bin/python3
的理解:
分成两种情况:
(1) 如果调用 python 脚本时,使用:
python script.py
#!/usr/bin/python
被忽略,等同于注释。
(2) 如果调用 python 脚本时,使用:
./script.py
#!/usr/bin/python
指定解释器的路径。
二、多行语句
Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠 ** 来实现多行语句,例如:
Etotal = item_one + \
item_two + \
item_three
在 [], {}, 或 () 中的多行语句,不需要使用反斜杠 ****,例如:
total = ['item_one', 'item_two', 'item_three',
'item_four', 'item_five']
三、多个语句构成代码组
缩进相同的一组语句构成一个代码块,我们称之代码组。
像 if、while、def 和 class 这样的复合语句,首行以关键字开始,以冒号 (:) 结束,该行之后的一行或多行代码构成代码组。
我们将首行及后面的代码组称为一个子句 (clause)。
如下实例:
if expression :
suite
elif expression :
suite
else :
suite
四、import 与 from…import
在 python 用 import
或者 from...import
来导入相应的模块。
将整个模块 (somemodule) 导入,格式为: import somemodule
从某个模块中导入某个函数,格式为: from somemodule import somefunction
从某个模块中导入多个函数,格式为: from somemodule import firstfunc, secondfunc, thirdfunc
将某个模块中的全部函数导入,格式为: from somemodule import *
导入 sys 模块
import sys
print('================Python import mode==========================')
print ('命令行参数为:')
for i in sys.argv:
print (i)
print ('\n python 路径为',sys.path)
导入 sys 模块的 argv,path 成员
from sys import argv,path # 导入特定的成员
print('================python from import===================================') print('path:',path) # 因为已经导入path成员,所以此处引用时不需要加sys.path
更多内容可以参考:Python import 和 from … import 的主要区别
五、Python3 解释器
有 Python、IPython、Jython、PyPy 等等
CPython 就是用 C 语言开发的,是官方标准实现,拥有良好的生态,所以应用也就最为广泛了(https://github.com/python/cpython)。
而 IPython 是在 CPython 的基础之上在交互式方面得到增强的解释器(http://ipython.org/)。
Jython 是专为 Java 平台设计的 Python 解释器(http://www.jython.org/),它把 Python 代码编译成 Java 字节码执行。
PyPy 是 Python 语言(2.7.13 和 3.5.3)的一种快速、兼容的替代实现(http://pypy.org/),以速度快著称。
六、python3 注释
单行注释
#这是一个注释
print("Cello, World")
#符号后面的所有文本都被视为注释,不会被解释器执行。
多行注释
单引号(’’’)
#usr/bin/env python3
'''
这是第一行
这是第二行
这是第三行
'''
print("Cello, World")
双引号(""")
#!/usr/bin/python3
"""
这是多行注释(字符串),用三个双引号
这是多行注释(字符串),用三个双引号
这是多行注释(字符串),用三个双引号
"""
print("Cello, World!")
注意:虽然多行字符串在这里被当作多行注释使用,但它实际上是一个字符串,我们只要不使用它,它不会影响程序的运行。
这些字符串在代码中可以被放置在一些位置,而不引起实际的执行,从而达到注释的效果。
嵌套多行注释会导致语法错误。
'''
这是外部的多行注释
可以包含一些描述性的内容
'''
这是尝试嵌套的多行注释
会导致语法错误
'''
'''
'''
这是外部的多行注释
可以包含一些描述性的内容
# 这是内部的单行注释
# 可以嵌套在多行注释中
'''
python3 运算符
4 + 5 = 9
其中 4 和 5 被称为操作数,+ 称为运算符
Python 语言支持以下类型的运算符:
Python 算术运算符
Python 比较运算符
Python 赋值运算符
Python 逻辑运算符
Python 成员运算符
Python 身份运算符
Python 运算符优先级
一、Python 算数运算符
#!/usr/bin/env python3
a = 21
b = 10
c = 0
c = a + b
print("The sum of", a,"and", b,"is", c)
c = a - b
print ("2 - c 的值为:", c)
c = a * b
print ("3 - c 的值为:", c)
c = a / b
print ("4 - c 的值为:", c)
c = a % b
print ("5 - c 的值为:", c)
# 修改变量 a 、b 、c
a = 2
b = 3
c = a**b
print ("6 - c 的值为:", c)
a = 10
b = 5
c = a//b
print ("7 - c 的值为:", c)
以上输出为:
1 - c 的值为: 31
2 - c 的值为: 11
3 - c 的值为: 210
4 - c 的值为: 2.1
5 - c 的值为: 1
6 - c 的值为: 8
7 - c 的值为: 2
二、Python 比较运算符
三、Python 赋值运算符
数据结构
数据结构(data structure)是计算机中存储、组织数据的方式。数据结构是一种具有一定逻辑关系,在计算机中应用某种存储结构,并且封装了相应操作的数据元素集合。它包含三方面的内容,逻辑关系、存储关系及操作。不同种类的数据结构适合于不同种类的应用,而部分甚至专门用于特定的作业任务。例如,计算机网络依赖于路由表运作,B 树高度适用于数据库的封装。
为什么要学习数据结构和算法?
随着应用程序变得越来越复杂和数据越来越丰富,几百万、几十亿甚至几百亿的数据就会出现,对这么大对数据进行搜索、插入或者排序等的操作就越来越慢,数据结构就是用来解决这些问题的。
常见的数据结构
栈(Stack):栈是一种特殊的线性表,它只能在一个表的一个固定端进行数据结点的插入和删除操作。
队列(Queue):队列和栈类似,也是一种特殊的线性表。和栈不同的是,队列只允许在表的一端进行插入操作,而在另一端进行删除操作。
数组(Array):数组是一种聚合数据类型,它是将具有相同类型的若干变量有序地组织在一起的集合。
链表(Linked List):链表是一种数据元素按照链式存储结构进行存储的数据结构,这种存储结构具有在物理上存在非连续的特点。
树(Tree):树是典型的非线性结构,它是包括,2 个结点的有穷集合 K。
图(Graph):图是另一种非线性数据结构。在图结构中,数据结点一般称为顶点,而边是顶点的有序偶对。
堆(Heap):堆是一种特殊的树形数据结构,一般讨论的堆都是二叉堆。
散列表(Hash table):散列表源自于散列函数(Hash function),其思想是如果在结构中存在关键字和T相等的记录,那么必定在F(T)的存储位置可以找到该记录,这样就可以不用进行比较操作而直接取得所查记录。
常用算法
数据结构研究的内容:就是如何按一定的逻辑结构,把数据组织起来,并选择适当的存储表示方法把逻辑结构组织好的数据存储到计算机的存储器里。算法研究的目的是为了更有效的处理数据,提高数据运算效率。数据的运算是定义在数据的逻辑结构上,但运算的具体实现要在存储结构上进行。一般有以下几种常用运算:
检索:检索就是在数据结构里查找满足一定条件的节点。一般是给定一个某字段的值,找具有该字段值的节点。
插入:往数据结构中增加新的节点。
删除:把指定的结点从数据结构中去掉。
更新:改变指定节点的一个或多个字段的值。
排序:把节点按某种指定的顺序重新排列。例如递增或递减。
Python3 数据结构
列表
Python中列表是可变的,这是它区别于字符串和元组的最重要的特点,一句话概括即:列表可以修改,而字符串和元组不能。
以下是 Python 中列表的方法: