大数据技术之_24_电影推荐系统项目_02_Python 基础语法

第六章 Python 基础语法6.1 Python 综述6.1.1 Python 是什么6.1.2 Python 的发展6.1.3 Python 的特点6.2 Python3 安装6.2.1 Python3 和 Python2 的区别6.2.2 Python3 环境的安装(以 windows 为例)6.2.3 Anaconda(巨蟒) 安装教程(可选)6.3 Python 基本语法6.3.1 编码6.3.2 标识符6.3.3 注释6.3.4 关键字和保留字6.3.5 行和缩进6.3.6 多行语句6.3.7 Python 的引号6.3.8 Python 空行6.3.9 等待用户输入6.3.10 同一行显示多条语句6.3.11 多个语句构成代码组6.3.12 print 输出6.3.13 import 与 from … import6.3.14 命令行参数6.4. 基本数据类型6.4.1 变量赋值6.4.2 多变量赋值6.4.3 标准数据类型6.4.4 Number6.4.5 String6.4.6 List6.4.7 Tuple6.4.8 Set6.4.9 Dictionary(字典)6.4.10 python类型转换6.5 Python 解释器6.5.1 环境变量设置6.5.2 交互式编程6.5.3 脚本式编程6.6 运算符6.6.1 算术运算符6.6.2 比较运算符6.6.3 赋值运算符6.6.4 位运算符6.6.5 逻辑运算符(bool)6.6.6 成员运算符6.6.7 身份运算符6.6.8 Python 运算符优先级6.7 字符串(String)6.7.1 字符串创建6.7.2 字符串访问6.7.3 字符串运算6.7.4 Python 字符串格式化6.7.5 内建函数6.8 列表(List)6.8.1 列表创建6.8.2 列表值获取6.8.3 列表更新6.8.4 删除列表元素6.8.5 其它列表操作6.8.6 列表嵌套6.8.7 Python 列表函数和方法6.9 元组6.9.1 元组创建6.9.2 元组值获取6.9.3 元组更新6.9.4 删除元组元素6.9.5 元组运算符6.9.6 元组内置函数6.10 字典6.10.1 字典创建6.10.2 字典值获取6.10.3 更新字典6.10.4 删除字典元素6.10.5 字典内置函数&方法6.11 Set 集合6.11.1 Set 集合创建6.11.2 Set 集合添加元素6.11.3 移除元素6.11.4 集合操作方法6.12 条件判断6.12.1 基本语法6.12.2 注意要点6.13 循环语句6.13.1 while 循环6.13.2 for 循环6.13.3 range() 函数6.13.4 break 和 continue 语句及循环中的 else 子句6.13.5 pass 语句6.14 迭代器和生成器6.14.1 迭代器生成6.14.2 迭代器遍历6.14.3 创建一个迭代器6.14.4 生成器6.15 函数6.15.1 基本语法6.15.2 函数分类6.15.3 匿名函数6.15.4 变量作用域6.15.5 全局变量和局部变量


第六章 Python 基础语法

6.1 Python 综述

6.1.1 Python 是什么

  Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。
  Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。
  ython 是一种解释型语言:这意味着开发过程中没有了编译这个环节。类似于 PHP 和 Perl 语言。
  Python 是交互式语言:这意味着,我们可以在一个 Python 提示符后面直接互动执行写自己的程序。
  Python 是面向对象语言:这意味着 Python 支持面向对象的风格或代码封装在对象的编程技术。
  Python 是初学者的语言:Python 简单易学,对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 Web 浏览器再到游戏。
  C 语言是让计算机感到舒服的语言(内存、指针);Python 是让程序员感到舒服的语言。

6.1.2 Python 的发展

  Python 是由 Guido van Rossum(龟叔)在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的。
  Python 本身也是由诸多其他语言发展而来的,这包括 ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell 和其他的脚本语言等等。像 Perl 语言一样,Python 源代码同样遵循 GPL(GNU General Public License)协议。
  现在 Python 是由一个核心开发团队在维护,Guido van Rossum 仍然占据着至关重要的作用,指导其进展,“仁慈的独裁者”。

6.1.3 Python 的特点

  • 易于学习:Python 有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。
  • 易于阅读:Python 代码定义的更清晰。
  • 易于维护:Python 的成功在于它的源代码是相当容易维护的。
  • 一个广泛的标准库:Python 的最大的优势之一是丰富的库、跨平台的,在 UNIX、Windows 和 Macintosh 兼容很好。
  • 互动模式:互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。
  • 可移植:基于其开放源代码的特性,Python 已经被移植(也就是使其工作)到许多平台。
  • 可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用 C 或 C++ 完成那部分程序,然后从你的 Python 程序中调用。
  • 数据库:Python 提供所有主要的商业数据库的接口。
  • GUI 编程:Python 支持 GUI 可以创建和移植到许多系统调用。
  • 可嵌入:你可以将 Python 嵌入到 C/C++ 程序,让你的程序的用户获得"脚本化"的能力。

6.2 Python3 安装

6.2.1 Python3 和 Python2 的区别

  Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。
  为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下相容。
  许多针对早期 Python 版本设计的程式都无法在 Python 3.0 上正常执行。
  为了照顾现有程式,Python 2.6 作为一个过渡版本,基本使用了 Python 2.x 的语法和库,同时考虑了向 Python 3.0 的迁移,允许使用部分 Python 3.0 的语法与函数。
  新的 Python 程式建议使用 Python 3.0 版本的语法。
  除非执行环境无法安装 Python 3.0 或者程式本身使用了不支援 Python 3.0 的第三方库。目前不支援 Python 3.0 的第三方库有 Twisted、py2exe,、PIL 等。
  Python 3.0 在 print 函数、Unicode 编码、除法运算、数据类型和异常等方面都与 2.X 版本有所变化。

6.2.2 Python3 环境的安装(以 windows 为例)

第一步:下载 python 环境安装包
  官方地址:https://www.python.org/
第二步:安装 python 环境
  参考链接:windows下如何下载并安装Python 3.6.4 ?

6.2.3 Anaconda(巨蟒) 安装教程(可选)

  如果是在 windows 系统中安装,为了更简单地使用 python 中丰富的库资源,可以直接安装一个 python “全家桶”--Anaconda。
  Anaconda 是一个 python 的发行版,包括了 python 和很多常见的软件库,和一个包管理器 conda。常见的科学计算类的库都包含在里面,使得安装比常规 python 安装要容易。注意:装了 Anaconda 就不需要再装 python 了。
  Anaconda 不仅可以方便地安装、更新、卸载工具包,而且安装时能自动安装相应的依赖包,同时还能使用不同的虚拟环境隔离不同要求的项目;从而大大简化了工作流程。
  下载地址:https://www.anaconda.com/distribution/
  下载需要的对应版本,安装非常简单,只要跟着引导一步步做就可以了!

Windows安装 Anaconda3 详细教程:
1、双击安装程序,选择 Next


2、点击 I Agree

3、选择 All Users

4、选择安装目录

5、点击 Install

6、正在安装过程中

7、安装成功,点击 Next

8、点击 Skip,不建议 Install Microsoft VSCode,以后需要的时候再独自安装

9、取消默认的2个勾选,点击 Finish

10、安装好 Anaconda3 软件后,会有一个 Anaconda Prompt,类似于 Windows 的 cmd 操作

  Anaconda Prompt 终端 -- 它可让你使用命令行界面来管理环境和包
  Spyder -- 它是面向科学开发的 IDE
  Anaconda Navigator -- 它是用于管理环境和包的 GUI
打开 Anaconda Prompt,测试下是否安装成功,分别输入 python、ipython、conda、jupyter notebook等命令,会看到相应的结果,说明安装成功。
  python 是进入 python 交互命令行
  ipython 是进入 ipython 交互命令行,很强大
  conda 是 Anaconda 的配置命令
  jupyter notebook 则会启动 Web 端的 ipython notebook

11、我们可以打开 Anaconda Navigator -> Launch jupyterlab ,也可以直接在浏览器输入 http://localhost:8888/lab (可以保存为书签)。

如果是布置在云端,可以输入服务器域名(IP地址),是不是很爽!!!下面介绍如何将 Jupyter Notebook 安装在云端。


Linux 上安装 Jupyter Notebook 的详细过程:

1.安装 python3(略)

2.安装 python 虚拟环境> pip install virtualenv -i https://pypi.tuna.tsinghua.edu.cn/simple/这里用 -i 参数指定了国内源,方便快速下载

3.创建虚拟环境> virtualenv -p python3 py3这里创建的是 python3 的虚拟环境,目录名叫 py3,目录名可以任意起!

4.启动 python 虚拟环境> source py3/bin/activate

5.在虚拟环境中安装 jupyter(py3)> pip install jupyter -i https://pypi.tuna.tsinghua.edu.cn/simple/

6.安装所需的 python 库(py3)> pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple/           # 数值计算、矩阵运算、向量运算(py3)> pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple/      # 画表格和图像(py3)> pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple/          # 数据分析、科学计算(py3)> pip install sklearn -i https://pypi.tuna.tsinghua.edu.cn/simple/         # 机器学习

7.创建目标目录并进入(py3)> mkdir algorithm(py3)> cd algorithm

8.启动 jupyter notebook(py3)> jupyter notebook

http://192.168.25.102:8888/lab默认启动端口为 8888,复制链接后可以通过浏览器访问

6.3 Python 基本语法

6.3.1 编码

默认情况下,python3 源文件以 UTF-8 编码,所有字符串都是 unicode 字符串。同时可以指定源文件的不同编码文件开头加上:    # -*- coding: UTF-8 -*-    # coding=utf-8(等号两边不能有空格)允许在源文件中使用 utf-8 字符集中的字符编码,对应的适合语言为中文等。

6.3.2 标识符

• 第一个字符必须是字母表中的字母或下划线_• 标识符中的其他部分由字母、数字和下划线组成• 标识符对大小写敏感• 在 python3 中,非 ASCII 标识符 (如中文字符) 也是允许的

6.3.3 注释

• 单行注释:井号 #• 多行注释:三个单引号‘‘‘xxx‘‘‘,或者三个双引号"""xxx"""

6.3.4 关键字和保留字

import keywordprint(len(keyword.kwlist))      # 33print(keyword.kwlist)           # 打印关键字

[‘False‘, ‘None‘, ‘True‘, ‘and‘, ‘as‘, ‘assert‘, ‘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‘]

简介:1.and:表示逻辑‘与’2.del:用于 list 列表操作,删除一个或者连续几个元素3.from:导入相应的模块,用 import 或者 from...import4.not:表示逻辑‘非’5.while:while 循环,允许重复执行一块语句,一般无限循环的情况下用它6.as:as 单独没有意思,是这样使用:with....as 用来代替传统的 try...finally 语法的7.elif:和 if 配合使用的,if 语句中的一个分支用 elif 表示8.global:定义全局变量    例如:    name = 10    age = 20    def test():        global name        age = 30        name = ‘aa‘        # print(name)    test()    print(name)     # ‘aa‘    print(age)      # 20

9.or:表示逻辑“或”10.with:和 as 一起用,使用的方法请看 as,见 with11.assert:表示断言(断言一个条件就是真的,如果断言出错则抛出异常)用于声明某个条件为真,如果该条件不是真的,则抛出异常:AssertionError    例如:    v1 = 10    v2 = 20    assert(v1 > v2)12.else:参考下面 if 的解释13.if:if 语句用于选择分支,依据条件选择执行那个语句块(if语句中最好不要嵌套 if 语句,建议把嵌套的 if 语句写在另一个函数中)14.pass:pass 的意思就是什么都不做,作用类似于占位符15.yield:用起来和 return 很像,但它返回的是一个生成器16.break:作用是终止循环,程序走到 break 的地方就是循环结束的时候17.except:和 try 一起使用,用来捕获异常18.import:用来导入模块,有时这样用 from....import19.class:定义类20.in:查找列表中是否包含某个元素,或者字符串 a 是否包含字符串 b21.raise:raise 可以显示地抛出异常。一旦执行 raise 语句,后面的代码就不执行了22.continue:跳过 continue 后面循环块中的语句,继续进行下一轮循环23.finally:看到 finally 语句,必然执行 finally 语句的代码块24.is:Python 中的对象包含三要素:id、type、value,用来判断对象是否相等25.return:用于跳出函数,也可以在跳出的同时返回一个值26.def:用于定义方法27.for:for ... in 一起使用:它在一序列的对象上递归,就是遍历队列中的每个项目28.lambda:即匿名函数29.try:出现在异常处理中,使用格式为:try ... except,try 中放想要执行的语句,except 捕获异常30.nonlocal:nonlocal 关键字用来在函数或其他作用域中使用外层(非全局)变量    例如:    def make_counter():         count = 0         def counter():             nonlocal count             count += 1             return count         return counter 

    def make_counter_test():         mc = make_counter()         print(mc())        print(mc())        print(mc())    make_counter_test()

6.3.5 行和缩进

学习 Python 与其他语言最大的区别就是,Python 的代码块不使用大括号 {} 来控制类,函数以及其他逻辑判断。python 最具特色的就是用缩进来写模块。缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行。例如:    if True:        print "True"    else:        print "False"

6.3.6 多行语句

Python 语句中一般以新行作为语句的结束符。但是我们可以使用斜杠( \)将一行的语句分为多行显示,如下所示:

    total = item_one + \            item_two + \            item_three    print(‘aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\            aaaaaaaaaaaaaaaaaaaa‘)

    语句中包含 [], {} 或 () 括号就不需要使用多行连接符。如下实例:    days = [‘Monday‘, ‘Tuesday‘, ‘Wednesday‘,            ‘Thursday‘, ‘Friday‘]

6.3.7 Python 的引号

Python 可以使用引号( ‘ )、双引号( " )、三引号( ‘‘‘ 或 """ ) 表示字符串,引号的开始与结束必须的相同类型的。其中三引号可以由多行组成,编写多行文本的快捷语法,常用于文档字符串,在文件的特定地点,被当做注释。

    word = ‘word‘    sentence = "这是一个句子。"    paragraph = """这是一个段落。    包含了多个语句"""

6.3.8 Python 空行

函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。空行与代码缩进不同,空行并不是 Python 语法的一部分。书写时不插入空行,Python 解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。记住:空行也是程序代码的一部分。

6.3.9 等待用户输入

执行下面的程序在按回车键后就会等待用户输入:input("\n\n按下 enter 键后退出。")

6.3.10 同一行显示多条语句

Python 可以在同一行中使用多条语句,语句之间使用分号(;)分割,以下是一个简单的实例:    x = ‘runoob‘;print(x + ‘\n‘)

6.3.11 多个语句构成代码组

缩进相同的一组语句构成一个代码块,我们称之代码组。像 if、while、def 和 class 这样的复合语句,首行以关键字开始,以冒号( : )结束,该行之后的一行或多行代码构成代码组。我们将首行及后面的代码组称为一个子句(clause)。例如:    if expression :        suite    elif expression :        suite     else :        suite

6.3.12 print 输出

同类型才可以相加print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end="" 或者 end=‘‘

    x="a"    y="b"    # 换行输出    print(x)    print(y)

    print(‘---------‘)

    # 不换行输出    print(x, end="")    print(y, end="")    print()

6.3.13 import 与 from … import

在 python 用 import 或者 from...import 来导入相应的模块。    a、将整个模块(somemodule)导入,格式为: import somemodule    b、从某个模块中导入某个函数,格式为: from somemodule import somefunction    c、从某个模块中导入多个函数,格式为: from somemodule import firstfunc,secondfunc,thirdfunc    d、将某个模块中的全部函数导入,格式为: from somemodule import *

(1)导入 sys 模块    import sys    print(‘================Python  import  mode==================‘);    print (‘命令行参数为:‘)    for i in sys.argv :        print (i)    print(‘\n python 路径为‘, sys.path)

(2)导入 sys 模块的 argv,path 成员    from sys import argv,path  #  导入特定的成员        print(‘================python  from  import=====================‘)    print(‘path:‘, path)     # 因为已经导入 path 成员,所以引用不需要加 sys.path

6.3.14 命令行参数

    很多程序可以执行一些操作来查看一些基本信息,Python 可以使用 -h 参数查看各参数帮助信息:

$ python -h        usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...Options and arguments (and corresponding environment variables):-c cmd : program passed in as string (terminates option list)-d     : debug output from parser (also PYTHONDEBUG=x)-E     : ignore environment variables (such as PYTHONPATH)-h     : print this help message and exit

6.4. 基本数据类型

6.4.1 变量赋值

counter = 100        # 整型变量miles = 1000.0        # 浮点型变量name = "runoob"        # 字符串

print(counter)print(miles)print(name)

6.4.2 多变量赋值

Python 允许你同时为多个变量赋值。例如:    a = b = c = 1以上实例,创建一个整型对象,值为 1,从后向前赋值,三个变量被赋予相同的数值。

可以为多个对象指定多个变量。例如:    a, b, c = 1, 2, "runoob"    a, b = b, a     # 变量的交换以上实例,两个整型对象 1 和 2 的分配给变量 a 和 b,字符串对象 "runoob" 分配给变量 c。

注意:    a = 10    b = 20    a, b = b, a + 5    print(a, b)结果:a=20, b=15

6.4.3 标准数据类型

Number(数字)、String(字符串)、Tuple(元组)、List(列表)、Dictionary(字典)、Set(集合)

a、不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组)b、可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)

6.4.4 Number

int、float、bool、complex(复数)例如:    a, b, c, d = 20, 5.5, True, 5 + 4j    print(type(a), type(b), type(c), type(d))

函数

type(a)                    # 判断数据类型isinstance(a, int)      # 判断数据是否属于某类型del var1, var2          # 手动 GC

区别:    (1) type() 不会认为子类是一种父类类型    (2) isinstance() 会认为子类是一种父类类型    例如:        class A:            pass        class B(A):            pass        print(type(A()) == A)       # True        print(type(B()) == A)       # False        print(isinstance(A(), A))   # True        print(isinstance(B(), A))   # True

进制

二进制:使用 0b 开头    例如:0b1010八进制:使用 0o 开头    例如:0o555十六进制:使用 0x 开头  例如:0x52A74(大小写都 OK)

bin()oct()hex()

python 中没有数字的大小限制,可以使用任意大的数字;python 可以保证整数运算的精确,但是浮点数运算时可能会得到一个不精确的结果。

数学函数
import math
(1) 基本数学函数

函数                    返回值 ( 描述 )abs(x)                返回数字的绝对值,如 abs(-10) 返回 10ceil(x)                返回数字的上入整数,如 math.ceil(4.1) 返回 5(x>y)-(x<y)         如果 x < y 返回 -1                    如果 x == y 返回 0                    如果 x > y 返回 1exp(x)              返回 e 的 x 次幂 (ex)                    如 math.exp(1) 返回 2.718281828459045fabs(x)             返回数字的绝对值,如 math.fabs(-10) 返回 10.0floor(x)            返回数字的下舍整数,如 math.floor(4.9)返回 4log(x)                如 math.log(math.e) 返回 1.0,                    如 math.log(100,10) 返回 2.0log10(x)            返回以 10 为基数的 x 的对数,                    如 math.log10(100) 返回 2.0max(x1, x2,...)        返回给定参数的最大值,参数可以为序列min(x1, x2,...)        返回给定参数的最小值,参数可以为序列modf(x)                返回 x 的整数部分与小数部分,                    两部分的数值符号与 x 相同,                    整数部分以浮点型表示pow(x, y)            x**y 运算后的值round(x [,n])       返回浮点数 x 的四舍五入值,如给出 n 值,                    则代表舍入到小数点后的位数sqrt(x)                返回数字 x 的平方根

(2) 随机数函数
随机数可以用于数学,游戏,安全等领域中,还经常被嵌入到算法中,用以提高算法效率,并提高程序的安全性。

函数                    描述choice(seq)         从序列的元素中随机挑选一个元素,                    比如 random.choice(range(10)),表示从0到9中随机挑选一个整数。randrange ([start,] stop [,step])    从指定范围内,按指定基数递增的集合                                    中获取一个随机数,基数缺省值为 1random()            随机生成下一个实数,它在 [0,1) 范围内seed([x])           改变随机数生成器的种子 seed,                    如果你不了解其原理,你不必特别去设定 seed,Python 会帮你选择 seed。shuffle(lst)        将序列的所有元素随机排序uniform(x, y)       随机生成下一个实数,它在 [x,y] 范围内

(3) 三角函数

函数                    描述acos(x)                返回 x 的反余弦弧度值。asin(x)                返回 x 的反正弦弧度值。atan(x)                返回 x 的反正切弧度值。atan2(y, x)            返回给定的 X 及 Y 坐标值的反正切值。cos(x)                返回 x 的弧度的余弦值。hypot(x, y)            返回欧几里德范数 sqrt(x*x + y*y)。sin(x)                返回 x 弧度的正弦值。tan(x)                返回 x 弧度的正切值。degrees(x)            将弧度转换为角度,如 degrees(math.pi/2) 返回 90.0radians(x)            将角度转换为弧度

(4) 数学常量

常量                    描述pi                    数学常量 pi(圆周率,一般以 π 来表示)e                    数学常量 e,e 即自然常数(自然常数)

6.4.5 String

Python 中的字符串用 单引号 或 双引号 括起来,同时使用反斜杠 \ 转义特殊字符。下标从 0 开始。加号 + 是字符串的连接符, 星号 * 表示复制当前字符串,紧跟的数字为复制的次数。

(1) 字符串截取        变量[头下标:尾下标:步长)

         -6  -5  -4  -3  -2  -1          0   1   2   3   4   5        +---+---+---+---+---+---+        | a | b | c | d | e | f |        +---+---+---+---+---+---+

        例如:            str = ‘hello world‘            l = str[0:1:1]  # 包头不包尾            print(l) # h

(2) 字符串打印    Python 使用反斜杠(\)转义特殊字符,如果你不想让反斜杠发生转义,可以在字符串前面添加一个 r,表示原始字符串:

    print(‘Ru\noob‘)    Ru    oob    print(r‘Ru\noob‘)    Ru\noob

(3) 字符串获取    print(str[0])    注意:        1、反斜杠可以用来转义,使用 r 可以让反斜杠不发生转义。        2、字符串可以用 + 运算符连接在一起,用 * 运算符重复。        3、Python 中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。        4、Python 中的字符串不能改变。            str = ‘abcdef‘            str[0] = ‘s‘    # 报错        5、Python 没有单独的字符类型,一个字符就是长度为1的字符串。

6.4.6 List

List(列表)是 Python 中使用最频繁的数据类型。列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓列表的嵌套)。列表是写在方括号 [] 之间、用逗号分隔开的元素列表。和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。

定义:    list = [0, 1, 2, 3, ‘c‘]    list[0]         # 0    len(list)       # 长度5    list[0:3]       # [0, 1, 2]

注意:    1、List 写在方括号之间,元素用逗号隔开。    2、和字符串一样,list 可以被索引和切片。    3、List 可以使用+操作符进行拼接。    4、List 中的元素是可以改变的。    5、不支持与或非运算。

6.4.7 Tuple

元组(tuple)与列表类似,不同之处在于:元组的元素不能修改。元组写在小括号 () 里,元素之间用逗号隔开。

定义:    t = (0, 1, 2, 3, ‘c‘)    t[0]            # 0    len(list)       # 长度 5    t[0:3]          # (0, 1, 2)    t[0] = 2        # 报错

注意:    1、与字符串一样,元组的元素不能修改。虽然 tuple 的元素不可改变,但它可以包含可变的对象,比如 list 列表。       注意:元组里面存的是可变对象的地址,因为可变对象的地址是不可以改变的。        list = [0, 2, 1, 3]        t = (0, 1, 2, 3, list)        t[0] = 1            # 报错        t[4][0] = 1        print(t[4])         # ok    2、元组也可以被索引和切片,方法一样。    3、注意:构造包含 0 或 1 个元素的元组的特殊语法规则。        tup1 = ()           # 空元组        tup2 = (20,)        # 一个元素,需要在元素后添加逗号    4、元组也可以使用 + 或 * 操作符进行拼接。

6.4.8 Set

集合(set)的事物或对象称作元素或是成员。基本功能是进行成员关系测试和删除重复元素。可以使用大括号 {} 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 {},因为 {} 是用来创建一个空字典。

创建格式:    parame = {value01, value02, ...} 或者 set(value)

    s = {‘Tom‘, ‘Jim‘, ‘Mary‘, ‘Tom‘, ‘Jack‘, ‘Rose‘}    print(s)                    # {‘Mary‘, ‘Jack‘, ‘Rose‘, ‘Tom‘, ‘Jim‘}

    s = set(‘1b1b2b3b2b‘)       # {‘2‘, ‘3‘, ‘1‘, ‘b‘}  元素不能重复

    set 操作:    # set 可以进行集合运算    a = set(‘abracadabra‘)    b = set(‘alacazam‘)    print(a)    >>> {‘b‘, ‘a‘, ‘c‘, ‘r‘, ‘d‘}    print(a - b)     # a 和 b 的差集    >>> {‘b‘, ‘d‘, ‘r‘}    print(a | b)     # a 和 b 的并集    >>> {‘l‘, ‘r‘, ‘a‘, ‘c‘, ‘z‘, ‘m‘, ‘b‘, ‘d‘}    print(a & b)     # a 和 b 的交集    >>> {‘a‘, ‘c‘}    print(a ^ b)     # a 和 b 中不同时存在的元素,注意:(a ^ b) = (a - b)|(b - a)    >>> {‘l‘, ‘r‘, ‘z‘, ‘m‘, ‘b‘, ‘d‘}

6.4.9 Dictionary(字典)

字典(dictionary)是 Python 中另一个非常有用的内置数据类型。列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。字典是一种映射类型,字典用"{}"标识,它是一个无序的 键(key):值(value)对 集合。键(key) 必须使用不可变类型。在同一个字典中,键(key) 必须是唯一的。

字典创建:    (1) d = {"a":1, "b":2, "c":3}    (2) d = dict([(‘Runoob‘, 1), (‘Google‘, 2), (‘Taobao‘, 3)])    (3) d = {x : x**2 for x in (2, 4, 6)} # 其中 x : x**2  表示键,生成的字典是 {2: 4, 4: 16, 6: 36}    (4) d = dict(Runoob=1, Google=2, Taobao=3)字典操作:    tinydict = {‘name‘: ‘guigu‘, ‘code‘: 1, ‘site‘: ‘www.atguigu.com‘}

    print (dict[‘name‘])            # 输出键为 ‘name‘ 的值    print (dict[‘code‘])            # 输出键为 ‘code‘ 的值    print (tinydict)                # 输出完整的字典    print (tinydict.keys())         # 输出所有键 dict_keys([‘name‘, ‘code‘, ‘site‘])    print (tinydict.values())       # 输出所有值 dict_values([‘guigu‘, 1, ‘www.atguigu.com‘])

6.4.10 Python 类型转换

函数                              描述int(x [,base])                将 x 转换为一个整数float(x)                    将 x 转换到一个浮点数complex(real [,imag])        创建一个复数str(x)                        将对象 x 转换为字符串repr(x)                        将对象 x 转换为表达式字符串eval(str)                    用来计算在字符串中的有效 Python 表达式,并返回一个对象tuple(s)                    将序列 s 转换为一个元组list(s)                        将序列 s 转换为一个列表set(s)                        转换为可变集合dict(d)                        创建一个字典,d 必须是一个序列 (key, value)元组frozenset(s)                转换为不可变集合chr(x)                        将一个整数转换为一个字符(ASCII 码)ord(x)                        将一个字符转换为它的 ASCII 码值hex(x)                        将一个整数转换为一个十六进制字符串oct(x)                        将一个整数转换为一个八进制字符串

6.5 Python 解释器

Linux/Unix 的系统上,一般默认的 python 版本为 2.x,我们可以将 python3.x 安装在 /usr/local/python3 目录中。安装完成后,我们可以将路径 /usr/local/python3/bin 添加到您的 Linux/Unix 操作系统的环境变量中,这样您就可以通过 shell 终端输入下面的命令来启动 Python3 。

$ PATH=$PATH:/usr/local/python3/bin/python3    # 设置环境变量$ python3 --versionPython 3.4.0

6.5.1 环境变量设置

在 Window 系统下你可以通过以下命令来设置 Python 的环境变量,假设你的 Python 安装在 C:\Python34 下:set path=%path%;C:\python34

6.5.2 交互式编程

我们可以在命令提示符中输入"python"(或者"python3",具体视安装时的命令名称而定)命令来启动 Python 解释器:$ python3

(1)执行以上命令后,出现如下窗口信息:$ python3Python 3.4.0 (default, Apr 11 2014, 13:05:11) [GCC 4.8.2] on linuxType "help", "copyright", "credits" or "license" for more information.>>> 

(2)在 python 提示符中输入以下语句,然后按回车键查看运行效果:print("Hello, Python!")

(3)以上命令执行结果如下:Hello, Python!

(4)当键入一个多行结构时,续行是必须的。我们可以看下如下 if 语句:>>> flag = True>>> if flag :...     print("flag 条件为 True!")... flag 条件为 True!

6.5.3 脚本式编程

(1) 将如下代码拷贝至 hello.py 文件中:print("Hello, Python!")

(2)通过以下命令执行该脚本:python3 hello.py

(3)输出结果为:Hello, Python!

(4)在 Linux/Unix 系统中,你可以在脚本顶部添加以下命令让 Python 脚本可以像 SHELL 脚本一样可直接执行:#!/usr/bin/env python3

(5)然后修改脚本权限,使其有执行权限,命令如下:$ chmod +x hello.py

(6)执行以下命令:./hello.py

(7)输出结果为:Hello, Python!

6.6 运算符

6.6.1 算术运算符

a = 10    b = 21运算符          描述                    实例+                加              两个对象相加;a + b 输出结果 31-                减              得到负数或是一个数减去另一个数;a - b 输出结果 -11*                乘              两个数相乘或是返回一个被重复若干次的字符串;a * b 输出结果 210/                除              x 除以 y;b / a 输出结果 2.1%                取模            返回除法的余数;b % a 输出结果 1**                幂              返回 x 的 y 次幂;a**b 为 10 的 21 次方//                取整除          向下取接近除数的整数;9//2    # 4  -9//2  #-5

6.6.2 比较运算符

a = 10, b = 20

运算符          描述                    实例==              等于            比较对象是否相等,(a == b) 返回 False!=              不等于          比较两个对象是否不相等,(a != b) 返回 True>               大于            返回 x 是否大于 y,(a > b) 返回 False<               小于            返回 x 是否小于 y,(a < b) 返回 True>=              大于等于        返回 x 是否大于等于 y,(a >= b) 返回 False<=              小于等于        返回 x 是否小于等于 y,(a <= b) 返回 True

注意:所有比较运算符返回 1 表示真,返回 0 表示假。这分别与特殊的变量 True 和 False 等价。注意:这些变量名的大写。

6.6.3 赋值运算符

运算符              描述                实例=                简单的赋值运算符    c = a + b 将a + b 的运算结果赋值为 c +=                加法赋值运算符      c += a 等效于   c = c + a-=                减法赋值运算符      c -= a 等效于   c = c - a*=                乘法赋值运算符      c *= a 等效于   c = c * a/=                除法赋值运算符      c /= a 等效于   c = c / a%=                取模赋值运算符      c %= a 等效于   c = c % a**=                幂赋值运算符        c **= a 等效于  c = c ** a//=                取整除赋值运算符    c //= a 等效于  c = c // a

6.6.4 位运算符

a = 60, b = 13二进制形式:a = 0011 1100, b = 0000 1101

运算符              描述                实例&               按位与运算符        (a & b) 输出结果 12 ,二进制解释: 0000 1100|               按位或运算符        (a | b) 输出结果 61 ,二进制解释: 0011 1101^               按位异或运算符      (a ^ b) 输出结果 49 ,二进制解释: 0011 0001~               按位取反运算符      (~a )   输出结果 -61 ,二进制解释: 1100 0011<<              左移动运算符        a << 2  输出结果 240 ,二进制解释: 1111 0000>>              右移动运算符        a >> 2  输出结果 15 ,二进制解释:0000 1111

6.6.5 逻辑运算符(bool)

a = 10, b = 20

运算符              描述                实例and    x and y     布尔"与"            如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值,(a and b) 返回 20or x or y       布尔"或"            如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值,(a or b) 返回 10not    not x       布尔"非"            如果 x 为 True,返回 False。如果 x 为 False,它返回 True,not(a and b) 返回 False

6.6.6 成员运算符

除了以上的一些运算符之外,Python 还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。

运算符              描述in          如果在指定的序列中找到值返回 True,否则返回 False,            即 x 在 y 序列中,如果 x 在 y 序列中返回 Truenot in      如果在指定的序列中没有找到值返回 True,否则返回 False,            即 x 不在 y 序列中,如果 x 不在 y 序列中返回 True

6.6.7 身份运算符

身份运算符用于比较两个对象的存储单元。

运算符                描述is          is 是判断两个标识符是不是引用自一个对象                x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False。is not      is not 是判断两个标识符是不是引用自不同对象            x is not y ,类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。

6.6.8 Python 运算符优先级

以下表格列出了从最高到最低优先级的所有运算符:

运算符                      描述**                          指数 (最高优先级)~ + -                       按位翻转, 一元加号和减号 (最后两个的方法名为 [email protected] 和 [email protected])* / % //                    乘,除,取模和取整除+ -                            加法减法>> <<                       右移,左移运算符&                           位 ‘AND‘^ |                         位运算符<= < > >=                   比较运算符<> == !=                    等于运算符= %= /= //= -= += *= **=    赋值运算符is is not                   身份运算符in not in                   成员运算符and or not                  逻辑运算符

6.7 字符串(String)

6.7.1 字符串创建

s = ‘abcd‘s = "abcd"s = ‘‘‘    abcd    efg    ‘‘‘s = """    abcd    efg    """

6.7.2 字符串访问

a = s[0]        # 访问第0个元素l = len(s)        # 字符串的长度

6.7.3 字符串运算

a = “Hello”, b = “Python”操作符              描述                                        实例+               字符串连接                                  a + b 输出结果:HelloPython*               重复输出字符串                              a*2 输出结果:HelloHello[]              通过索引获取字符串中字符                    a[1] 输出结果:e[ : ]           截取字符串中的一部分,遵循左闭右开原则      str[0,2] 是不包含第 3 个字符的in              成员运算符                                  ‘H‘ in a 输出结果:Truenot in          成员运算符                                  ‘M‘ not in a 输出结果:Truer/R             原始字符串                                  print(r‘a\nb‘) # a\nb%               格式字符串                                  a=10;print("今年我%s岁" %a) # 今年我10岁

6.7.4 Python 字符串格式化

Python 支持格式化字符串的输出。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。

print ("我叫%s今年%d岁!" %(‘小明‘, 10)) # 我叫小明今年10岁!符号                描述%c                格式化字符及 其ASCII 码%s                格式化字符串%d                格式化整数%u                格式化无符号整型%o                格式化无符号八进制数%x                格式化无符号十六进制数%X                格式化无符号十六进制数(大写)%f                格式化浮点数字,可指定小数点后的精度%e                用科学计数法格式化浮点数%E                作用同 %e,用科学计数法格式化浮点数%g                %f 和 %e 的简写%G                %f 和 %E 的简写%p                用十六进制数格式化变量的地址

6.7.5 内建函数

方法                                        描述  capitalize()                            将字符串的第一个字符转换为大写endswith(suffix,beg=0,end=len(string))  检查字符串是否以 obj 结束expandtabs(tabsize=8)                    把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8find(str, beg=0 end=len(string))        检测 str 是否包含在字符串中,如果包含返回开始的索引值,否则返回-1index(str, beg=0, end=len(string))        跟 find() 方法一样,只不过如果 str 不在字符串中会报一个异常isalnum()                                如果字符串至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 Falseisdigit()                                如果字符串只包含数字则返回 True,否则返回 Falseisnumeric()                                如果字符串中只包含数字字符,则返回 True,否则返回 Falseisspace()                                如果字符串中只包含空白,则返回 True,否则返回 Falsejoin(seq)                                以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串len(string)                                返回字符串长度lower()                                    转换字符串中所有大写字符为小写lstrip()                                截掉字符串左边的空格或指定字符max(str)                                返回字符串 str 中最大的字母min(str)                                返回字符串 str 中最小的字母replace(old, new [, max])                将字符串中的 str1 替换成 str2,如果 max 指定,则替换不超过 max 次rfind(str, beg=0,end=len(string))        类似于 find()函数,不过是从右边开始查找rindex( str, beg=0, end=len(string))    类似于 index(),不过是从右边开始rstrip()                                删除字符串字符串末尾的空格   split(str="",num=string.count(str))    num=string.count(str))  以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num 个子字符串splitlines([keepends])                    按照行(‘\r‘, ‘\r\n‘, \n‘)分隔startswith(str,beg=0,end=len(string))   检查字符串是否是以 obj 开头strip([chars])                            在字符串上执行 lstrip()和 rstrip()upper()                                    转换字符串中的小写字母为大写

6.8 列表(List)

6.8.1 列表创建

list = [1, 2, 3, 4, 5, ‘atguigu‘][x+1 for x in range(10)]    # range(10) = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]    输出结果是:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10][x+1 for x in (1, 1, 2, 3)] # 输出结果是:(2, 2, 3, 4)

6.8.2 列表值获取

l  = list[0]l1 = list2[1:5]len(list)        #长度查看

6.8.3 列表更新

list[0] = ‘agg‘

6.8.4 删除列表元素

del list[0]

6.8.5 其它列表操作

表达式                                  结果                            描述len([1, 2, 3])                          3                               长度[1, 2, 3] + [4, 5, 6]                   [1, 2, 3, 4, 5, 6]              组合[‘Hi!‘]*4                               [‘Hi!‘, ‘Hi!‘, ‘Hi!‘, ‘Hi!‘]    重复3 in [1, 2, 3]                          True                            元素是否存在于列表中for x in [1, 2, 3]: print(x, end=" ")    1 2 3                           迭代

6.8.6 列表嵌套

使用嵌套列表即在列表里创建其它列表,例如:

a = [‘a‘, ‘b‘, ‘c‘]n = [1, 2, 3]x = [a, n]# x = [[‘a‘, ‘b‘, ‘c‘], [1, 2, 3]]# x[0] = [‘a‘, ‘b‘, ‘c‘]# x[0][1] = ‘b‘

6.8.7 Python 列表函数和方法

函数                                    描述len(list)                                列表元素个数max(list)                                返回列表元素最大值min(list)                                返回列表元素最小值list(seq)                                将元组转换为列表list.append(obj)                        在列表末尾添加新的对象list.count(obj)                         统计某个元素在列表中出现的次数list.extend(seq)                        在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)list.index(obj)                         从列表中找出某个值第一个匹配项的索引位置list.insert(index, obj)                 将对象插入列表list.pop([index=-1])                    移除列表中的一个元素(默认最后一个元素),并且返回该元素的值list.remove(obj)                        移除列表中某个值的第一个匹配项list.reverse()                          反向列表中元素list.sort(cmp=None, key=None, reverse=False)        对原列表进行排序list.clear()                            清空列表list.copy()                             复制列表

6.9 元组

6.9.1 元组创建

tup1 = (‘Google‘, ‘atguigu‘, 1997, 2000)tup2 = (1, 2, 3, 4, 5 )tup3 = "a", "b", "c", "d";   # 不需要括号也可以

6.9.2 元组值获取

tup1[1]tup1[1:5]

6.9.3 元组更新

元组不允许更新!

6.9.4 删除元组元素

del tup[0]

6.9.5 元组运算符

表达式                          结果                            描述len((1, 2, 3))                  3                               计算元素个数(1, 2, 3) + (4, 5, 6)           (1, 2, 3, 4, 5, 6)              连接(‘Hi!‘,) * 4                    (‘Hi!‘, ‘Hi!‘, ‘Hi!‘, ‘Hi!‘)    复制3 in (1, 2, 3)                  True                            元素是否存在for x in (1, 2, 3): print (x,)  1 2 3                           迭代(生成器)

6.9.6 元组内置函数

方法                    描述                        实例len(tuple)              计算元组元素个数            len(tuple1)max(tuple)              返回元组中元素最大值        max(tuple2)min(tuple)              返回元组中元素最小值        min(tuple2)tuple(seq)              将列表转换为元组            示例如下       

list1= [‘Google‘, ‘Taobao‘, ‘Runoob‘, ‘Baidu‘]tuple1=tuple(list1)     tuple1 = (‘Google‘, ‘Taobao‘, ‘Runoob‘, ‘Baidu‘)

6.10 字典

在字典中,键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行。

6.10.1 字典创建

dict = {‘Alice‘: ‘2341‘, ‘Beth‘: ‘9102‘, ‘Cecil‘: ‘3258‘}dict = {x: x+1 for x in range(10)}  # 输出结果是:{0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}

6.10.2 字典值获取

dict[‘Alice‘]

6.10.3 更新字典

dict[‘Alice‘] = 10

6.10.4 删除字典元素

del dict[‘Alice‘]del dict

6.10.5 字典内置函数&方法

函数                描述len(dict)           计算字典元素个数,即键的总数。dict = {‘Name‘: ‘Runoob‘, ‘Age‘: 7, ‘Class‘: ‘First‘}len(dict)

str(dict)           输出字典,以打印的字符串表示。dict = {‘Name‘: ‘Runoob‘, ‘Age‘: 7, ‘Class‘: ‘First‘}str(dict) "{‘Name‘: ‘Runoob‘, ‘Class‘: ‘First‘, ‘Age‘: 7}"

type(variable)      返回输入的变量类型。dict = {‘Name‘: ‘Runoob‘, ‘Age‘: 7, ‘Class‘: ‘First‘}type(dict)<class ‘dict‘>

-----------------------------------------------------

函数                                        描述radiansdict.clear()                            删除字典内所有元素radiansdict.copy()                            返回一个字典的浅复制radiansdict.fromkeys()                        创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值radiansdict.get(key, default=None)          返回指定键的值,如果值不在字典中返回 default 值key in dict                                 如果键在字典 dict 里返回 True,否则返回 Falseradiansdict.items()                            以列表返回可遍历的 (键, 值) 元组数组radiansdict.keys()                            返回一个迭代器,可以使用 list() 来转换为列表radiansdict.setdefault(key, default=None)   和 get() 类似, 但如果键不存在于字典中,将会添加键并将值设为 defaultradiansdict.update(dict2)                    把字典 dict2 的键/值对更新到dict里radiansdict.values()                        返回一个迭代器,可以使用 list() 来转换为列表pop(key[,default])                          删除字典给定键 key 所对应的值,返回值为被删除的值。key 值必须给出,否则返回 default 值popitem()                                    随机返回并删除字典中的一对键和值(一般删除末尾对)

-----------------------------------------------------

扩展:1. 浅拷贝:只拷贝引用地址,未拷贝内容:    a = [1, 2, 3, 4, 5]     b = a2. 深拷贝:拷贝引用地址和内容:    a = [1, 2, 3, 4, 5]     import copy     b = copy.deepcopy(a) 可以递归拷贝;一拷到底注意:    1、对于不可变类型 Number String Tuple,浅复制仅仅是地址指向,不会开辟新空间。    2、对于可变类型 List、Dictionary、Set,浅复制会开辟新的空间地址(仅仅是最顶层开辟了新的空间,里层的元素地址还是一样的)。    3、浅拷贝后,改变原始对象中为可变类型的元素的值,会同时影响拷贝对象的;改变原始对象中为不可变类型的元素的值,只有原始类型受影响。

6.11 Set 集合

集合不支持切片操作。

6.11.1 Set 集合创建

s = {‘name‘, ‘aa‘, ‘bb‘}s = set(序列)   # dict序列,值添加 keys = {x for x in range(10) if x not in range(5,10)}  # 结果是:{0, 1, 2, 3, 4}

6.11.2 Set 集合添加元素

s.add(x)        # 添加单个元素s.update(x)        # 添加序列元素

6.11.3 移除元素

s.remove(x)        # 移除单个元素s.discard(x)    # 移除集合(不存在不报错)s.pop()            # 随机删除集合中的一个元素

6.11.4 集合操作方法

方法                            描述len(s)                            查看集合的长度s.clear()                        清空集合x in s                             判断元素是否在集合中

add()                            为集合添加元素clear()                            移除集合中的所有元素copy()                            拷贝一个集合difference()                    返回多个集合的差集difference_update()                移除集合中的元素,该元素在指定的集合也存在。discard()                        删除集合中指定的元素intersection()                    返回集合的交集intersection_update()            删除集合中的元素,该元素在指定的集合中不存在。isdisjoint()                    判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。issubset()                        判断指定集合是否为该方法参数集合的子集。issuperset()                    判断该方法的参数集合是否为指定集合的子集pop()                            随机移除元素remove()                        移除指定元素symmetric_difference()            返回两个集合中不重复的元素集合。symmetric_difference_update()   移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。union()                            返回两个集合的并集update()                        给集合添加元素

6.12 条件判断

6.12.1 基本语法

if condition_1:    statement_block_1elif condition_2:    statement_block_2else:    statement_block_3

6.12.2 注意要点

1、每个条件后面要使用冒号 : 表示接下来是满足条件后要执行的语句块。2、使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。3、在 Python 中没有 switch – case 语句。

6.13 循环语句

6.13.1 while 循环

while bool:    passelse:    pass

练习1:1-100 求和练习2:输出 9*9 乘法表

6.13.2 for 循环

for <variable> in <sequence>:    <statements>

6.13.3 range() 函数

如果你需要遍历数字序列,可以使用内置 range() 函数。它会生成数列:    range(start, end, step)

6.13.4 break 和 continue 语句及循环中的 else 子句

(1) break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。(2) continue 语句被用来告诉 Python 跳过当前循环块中的剩余语句,然后继续进行下一轮循环。

6.13.5 pass 语句

Python pass 是空语句,是为了保持程序结构的完整性。pass 不做任何事情,一般用做占位语句。

6.14 迭代器和生成器

迭代是 Python 最强大的功能之一,是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。迭代器有两个基本的方法:iter() 和 next()。

6.14.1 迭代器生成

字符串,列表或元组对象都可用于创建迭代器。

list=[1, 2, 3, 4]it = iter(list)        # 创建迭代器对象print(next(it))        # 输出迭代器的下一个元素print(next(it))

6.14.2 迭代器遍历

list=[1, 2, 3, 4]it = iter(list)

(1)for循环    for i in it:        print(i)(2)while循环    import sys    while True:        try:            print(next(its))        except StopIteration:            sys.exit()

6.14.3 创建一个迭代器

把一个类作为一个迭代器使用需要在类中实现两个方法 __iter__() 与 __next__()

例如:class MyNumbers:    def __iter__(self):        self.a = 1        return self     def __next__(self):        if self.a < 20:            x = self.a            self.a += 1            return x        else:            raise StopIteration    myclass = MyNumbers()    myiter = iter(myclass)     print(next(myiter))    for x in myiter:          print(x)

6.14.4 生成器

在 Python 中,使用了 yield 的函数被称为生成器(generator)。跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值,并在下一次执行 next() 方法时从当前位置继续运行。

调用一个生成器函数,返回的是一个迭代器对象。import sysdef fibonacci(n):                 # 生成器函数 - 斐波那契    a, b, counter = 0, 1, 0    while True:        if (counter > n):           return        yield a        a, b = b, a + b        counter += 1f = fibonacci(10)                 # f 是一个迭代器,由生成器返回生成while True:    try:        print(next(f), end=" ")    except StopIteration:        sys.exit()

6.15 函数

6.15.1 基本语法

def 函数名(参数列表):    函数体

6.15.2 函数分类

1. 有参数    (1) 有几个参数,就得传入几个参数    (2) 在函数调用中输入参数时,参数名称必须对应            def aa(x):                print(x)            aa(x=5)    (3) 当调用函数时,必须全部定义名称,且名称对应,顺序可以不同            def aa(x, y):                print(x)            aa(y=2, x=5)    (4) 函数中可以定义默认值            def aa(x=30, y):                print(x)            aa(y=2, x=5)    (5) 不定长度参数            def aa(x, y, *args, **kwargs):                print(x)                print(args)     # 元组                print(kwargs)   # 字典            aa(1, 2, 3, 4, 5, 6, 7, a = 8, b=9)2. 有返回值    (1) 单个返回值        def aa(x):            return x        a = aa(10)    (2) 多个返回值        def aa(x):            return x, 10        a = aa(10)        # a是一个元组        a, b = aa(10)    # 多个参数接收

6.15.3 匿名函数

基本语法:    lambda [arg1 [,arg2,.....argn]]:expression

    sum = lambda arg1, arg2: arg1 + arg2    # 调用 sum 函数    print("相加后的值为 : ", sum(10, 20))    print("相加后的值为 : ", sum(20, 20))

6.15.4 变量作用域

L(Local)          局部作用域E(Enclosing)      闭包函数外的函数中G(Global)         全局作用域B(Built-in)       内建作用域L –> E –> G –>B     (在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内建中找)

x = int(2.9)                  # 内建作用域g_count = 0                  # 全局作用域def outer():    o_count = 1              # 闭包函数外的函数中    def inner():        i_count = 2          # 局部作用域        o_count += 1    inner()outer()

6.15.5 全局变量和局部变量

定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。

total = 0 # 这是一个全局变量# 可写函数说明def sum(arg1, arg2):    # 返回2个参数的和."    total = arg1 + arg2     # total 在这里是局部变量    print("函数内是局部变量:", total)    return total#调用 sum 函数sum(10, 20)print("函数外是全局变量:", total)

原文地址:https://www.cnblogs.com/chenmingjun/p/10874876.html

时间: 2024-07-29 02:51:06

大数据技术之_24_电影推荐系统项目_02_Python 基础语法的相关文章

大数据技术之_24_电影推荐系统项目_04_推荐系统算法详解

第九章 推荐系统算法详解9.1 常用推荐算法分类9.1.1 基于人口统计学的推荐与用户画像9.1.2 基于内容的推荐与特征方程9.1.3 基于协同过滤的推荐 第九章 推荐系统算法详解 9.1 常用推荐算法分类 9.1.1 基于人口统计学的推荐与用户画像 9.1.2 基于内容的推荐与特征方程 特征按照不同的数据类型分类,有不同的特征处理方法 推荐系统常见反馈数据 基于 UGC 的推荐 TF-IDF算法代码示例 9.1.3 基于协同过滤的推荐 基于近邻的协同过滤的推荐 基于模型的协同过滤的推荐 模型

基于大数据技术之电视收视率企业项目实战(hadoop+Spark)张长志(项目实战)

38套大数据,云计算,架构,数据分析师,Hadoop,Spark,Storm,Kafka,人工智能,机器学习,深度学习,项目实战视频教程 视频课程包含: 38套大数据和人工智能精品高级课包含:大数据,云计算,架构,数据挖掘实战,实时推荐系统实战,电视收视率项目实战,实时流统计项目实战,离线电商分析项目实战,Spark大型项目实战用户分析,智能客户系统项目实战,Linux基础,Hadoop,Spark,Storm,Docker,Mapreduce,Kafka,Flume,OpenStack,Hiv

基于大数据技术推荐系统算法案例实战视频教程(项目实战)

38套大数据,云计算,架构,数据分析师,Hadoop,Spark,Storm,Kafka,人工智能,机器学习,深度学习,项目实战视频教程 视频课程包含: 38套大数据和人工智能精品高级课包含:大数据,云计算,架构,数据挖掘实战,实时推荐系统实战,电视收视率项目实战,实时流统计项目实战,离线电商分析项目实战,Spark大型项目实战用户分析,智能客户系统项目实战,Linux基础,Hadoop,Spark,Storm,Docker,Mapreduce,Kafka,Flume,OpenStack,Hiv

中华石杉 Spark大型项目实战:电商用户行为分析大数据平台138讲视频教程(项目实战)

38套大数据,云计算,架构,数据分析师,Hadoop,Spark,Storm,Kafka,人工智能,机器学习,深度学习,项目实战视频教程 视频课程包含: 38套大数据和人工智能精品高级课包含:大数据,云计算,架构,数据挖掘实战,实时推荐系统实战,电视收视率项目实战,实时流统计项目实战,离线电商分析项目实战,Spark大型项目实战用户分析,智能客户系统项目实战,Linux基础,Hadoop,Spark,Storm,Docker,Mapreduce,Kafka,Flume,OpenStack,Hiv

大数据实时流统计视频教程(项目实战)

38套大数据,云计算,架构,数据分析师,Hadoop,Spark,Storm,Kafka,人工智能,机器学习,深度学习,项目实战视频教程 视频课程包含: 38套大数据和人工智能精品高级课包含:大数据,云计算,架构,数据挖掘实战,实时推荐系统实战,电视收视率项目实战,实时流统计项目实战,离线电商分析项目实战,Spark大型项目实战用户分析,智能客户系统项目实战,Linux基础,Hadoop,Spark,Storm,Docker,Mapreduce,Kafka,Flume,OpenStack,Hiv

周鸿祎:以大数据技术对抗大数据平台安全威胁

1月,中国大陆境内所有通用顶级域(.com/.net/.org等)解析出现问题,所有相关域名均被指向一个位于美国的IP地址(65.49.2.178),导致数千万网民在数小时内无法访问网站. 4月,OpenSSL"心脏出血(Heartbleed)"重大安全漏洞被曝光,这一漏洞让黑客能够读取服务器系统的运行内存.有业内人士利用该漏洞在某知名电商网站上测试时,成功获得多位用户的账号及密码,并成功登陆网站. 9月,"iCloud艳照门"事件爆发,数百张好莱坞女演员不雅照在网

下载基于大数据技术推荐系统实战教程(Spark ML Spark Streaming Kafka Hadoop Mahout Flume Sqoop Redis)

地址:http://pan.baidu.com/s/1c2tOtwc  密码:yn2r 82课高清完整版,转一播放码. 互联网行业是大数据应用最前沿的阵地,目前主流的大数据技术,包括 hadoop,spark等,全部来自于一线互联网公司.从应用角度讲,大数据在互联网领域主要有三类应用:搜索引擎(比如百度,谷歌等),广告系统(比如百度凤巢,阿里妈妈等)和推荐系统(比如阿里巴巴天猫推荐,优酷视频推荐等). 本次培训以商业实战项目作为驱动来学习大数据技术在推荐系统项目中的应用.使得学员能够亲身体会大数

大数据学习路线图 让你精准掌握大数据技术学习?

大数据指不用随机分析法这样捷径,而采用所有数据进行分析处理的方法.互联网时代每个企业每天都要产生庞大的数据,对数据进行储存,对有效的数据进行挖掘分析并应用需要依赖于大数据开发,大数据开发课程采用真实商业数据源并融合云计算+机器学习,让学员有实力入职一线互联网企业. 今天小编的技术分享详细学习大数据的精准路线图,学好大数据就还得靠专业的工具. 大数据学习QQ群:119599574 阶段一. Java语言基础 Java开发介绍.熟悉Eclipse开发工具.Java语言基础.Java流程控制.Java

大数据学习路线 让你精准掌握大数据技术学习

大数据指不用随机分析法这样捷径,而采用所有数据进行分析处理的方法.互联网时代每个企业每天都要产生庞大的数据,对数据进行储存,对有效的数据进行挖掘分析并应用需要依赖于大数据开发,大数据开发课程采用真实商业数据源并融合云计算+机器学习,让学员有实力入职一线互联网企业. 今天小编的技术分享详细学习大数据的精准路线图,学好大数据就还得靠专业的工具. 阶段一. Java语言基础 Java开发介绍.熟悉Eclipse开发工具.Java语言基础.Java流程控制.Java字符串.Java数组与类和对象.数字处