Python编程:基础知识之代码控制结构及推导式编程
重点内容
√ 1、熟悉并掌握Python常用基本语法、数据结构
√ 2、掌握Python编程控制结构
√ 3、掌握列表、字典推导式用法
语法知识
一.Python基础知识:控制结构
- 基本常用语法
- 控制结构:分支、循环
二、Python存储结构:推导式编程
- 元组、列表、字典、集合
- 推导式编程应用
Python关键字(保留字)一览表
保留字是Python语言中一些已经被赋予特定意义的单词,这就要求开发者在开发程序时,不能用这些保留字作为标识符给变量、函数、类、模板以及其他对象命名。
Python包含的保留字可以执行如下命令进行查看:
| >> > import keyword >>> keyword.kwlist |
如图所示,通过命令行导入并查看关键字:
Python print()函数用法
使用 print() 函数时,不仅可以输出了一个变量,实际上 print() 函数完全可以同时输出多个变量,而且它具 有更多丰富的功能。
print() 函数的详细语法格式如下:
| print (value,...,sep='',end='n',file=sys.stdout,flush=False) |
代码举例1,每个print之间结束处理end:
| #结果分析> end不传参默认为换行,因此结果分为两行: |
代码举例2,写入文件处理:
| #将信息写入文件 f = open("demo.txt", "w") #打开一个文件 |
代码举例3,自定义分隔符:
| #打印结果:张三##########18 name = "张三" |
Python input()函数:获取用户输入的字符串
input() 是 Python 的内置函数,用于从控制台读取用户输入的内容。 input() 函数的用法为:str = input(tipmsg)
说明:
◆ str 表示一个字符串类型的变量,input 会将读取到的字符串放入 str 中。
◆ tipmsg 表示提示信息,它会显示在控制台上,告诉用户应该输入什么样的内容;如果不写 tipmsg,就不会有任何提示信息。
代码示例4,输入并打印数据:
| a = input("Enter a number: ") |
Python比较运算符(关系运算符)
比较运算符,也称关系运算符,用于对常量、变量或表达式的结果进行大小比较。如果这种比较是成立的,则返回 True (真),反之则返回 False(假)。 Python 支持的比较运算符如表 1 所示。
代码举例5,判断下面的代码结果是什么?
| print("100是否大于100:", 100 > 100) #最终结果:FTTTTTF |
Python逻辑运算符及其用法
高中数学中我们就学过逻辑运算,例如 A1 为真命题,A2为假命题,那么“A1且A2”为假,“A1或A2”为真,“非A2”为真。Python 也有类似的逻辑运算,如下表:
代码举例6,逻辑判断:
| age = int(input("请输入年龄:")) |
== 和 is 的区别
初学 Python,大家可能对 is 比较陌生,很多人会误将它和 == 的功能混为一谈,但其实 is 与 == 有本质上的区别,完全 不是一码事儿。 == 用来比较两个变量的值是否相等,而 is 则用来比对两个变量引用的是否是同一个对象 两者的区别:
✓ ==是Python标准操作符中的比较操作符,用来比较判断两个对象的value(值)是否相等。
✓ is也被叫做同一性运算符,这个运算符比较判断的是对象间的唯一身份标识,也就是id是否相同。
| # a和b为整形类型:TT # print(id(b))# 打印b的地址140706765641376 # # a和b为元组类型:TT |
Python list列表
从形式上看,列表会将所有元素都放在一对中括号[ ]里面,相邻元素之间用逗号,分隔,如下所示: [element1, element2, element3, ..., elementn] 在 Python 中,创建列表的方法可分为两种:
1、使用 [ ] 直接创建列表
使用[ ]创建列表后,一般使用=将它赋值给某个变量,具体格式如下: listname = [element1 , element2 , element3 , ... , elementn] 其中,listname 表示变量名,element1 ~ elementn 表示列表元素。
| #使用 [ ] 直接创建列表 |
2、使用 list() 函数创建列表
除了使用[ ]创建列表外,Python 还提供了一个内置的函数 list(),使用它可以将其它数据类型转换为列表类型。
| #使用 list() 函数创建列表 # 将元组转换成列表 # # 创建空列表 |
3、访问列表元素 列表是 Python 序列的一种,我们可以使用索引(Index)访问列表中的某个元素(得到的是一个元素的值),也可以使用 切片访问列表中的一组元素(得到的是一个新的子列表)。
| url = [1,2,3,4,5,6,7,8] |
◆ 使用索引访问列表元素的格式为:listname[i]
其中,listname 表示列表名字,i 表示索引值。列表的索引可以是正数,也可以是负数。
| url = [1,2,3,4,5,6,7,8] |
◆ 使用切片访问列表元素的格式为:listname[start : end : step]
其中,listname 表示列表名字,start 表示起始索引,end 表示结束索引,step 表示步长。
| url = [1,2,3,4,5,6,7,8] |
Python list列表添加元素的3种方法
实际开发中,经常需要对 Python 列表进行更新,包括向列表中添加元素、修改表中元素以及删除元素。
1、Python append()方法添加元素 append() 方法用于在列表的末尾追加元素,该方法的语法格式如下:listname.append(obj)
其中,listname 表示要添加元素的列表;obj 表示到添加到列表末尾的数据,它可以是单个元素,也可以是列表、元组等
| list1 = ['Python', 'C++', 'Java'] list2 = [1, 2, 3] |
2、Python extend()方法添加元素 extend()方法的语法格式如下:listname.extend(obj)
其中,listname 指的是要添加元素的列表;obj 表示到添加到列表末尾的数据,它可以是单个元素,也可以是列表、元组 等。
| l = ['Python', 'C++', 'Java'] 打印结果: ['Python', 'C++', 'Java', 'C'] ['Python', 'C++', 'Java', 'C', 'Javascript', 'C#', 'Go'] ['Python', 'C++', 'Java', 'C', 'Javascript', 'C#', 'Go', 'Ruby', 'SQL'] |
3、Python insert()方法插入元素 insert() 的语法格式如下:
listname.insert(index , obj)
其中,index 表示指定位置的索引值。insert() 会将 obj 插入到 listname 列表第 index 个元素的位置。
| l = ['Python', 'C++', 'Java'] 打印结果: ['Python', 'C', 'C++', 'Java', 'C#'] ['Python', 'C', ('C#', 'Go'), 'C++', 'Java', 'C#'] ['Python', 'C', ('C#', 'Go'), ['Ruby', 'SQL'], 'C++', 'Java', 'C#'] |
Python tuple元组
元组(tuple)是 Python 中另一个重要的序列结构,和列表类似,元组也是由一系列按特定顺序排序的元素组成。 元组和列表(list)的不同之处在于:
◆ 列表的元素是可以更改的,包括修改元素值,删除和插入元素,所以列表是可变序列; ◆ 而元组一旦被创建,它的元素就不可更改了,所以元组是不可变序列。 元组也可以看做是不可变的列表,通常情况下,元组用于保存无需修改的内容。
Python 提供了两种创建元组的方法:
1) 使用 ( ) 直接创建
通过( )创建元组后,一般使用=将它赋值给某个变量,具体格式为: tuplename = (element1, element2, ..., elementn)
| >>> tup1 = ('Google', 'Runoob', 1997, 2000) |
2) 使用tuple()函数创建元组
除了使用( )创建元组外,Python 还提供了一个内置的函数 tuple(),用来将其它数据类型转换为元组类型。
| aList = [123, 'xyz', 'zara', 'abc']; |
Python dict字典
Python 字典(dict)是 Python 中唯一的映射类型,是一种无序的、可变的序列,它的元素以“键值对(key-value)”的形式存储。
字典中,习惯将各元素对应的索引称为键(key),各个键对应的元素称为值(value),键及其关联的值称为“键值对”。
Python创建字典
1、使用 { } 创建字典
由于字典中每个元素都包含两部分,分别是键(key)和值(value),因此在创建字典时,键和值之间使用冒号:分隔,相邻元素之间 使用逗号,分隔,所有元素放在大括号{ }中。 使用{ }创建字典的语法格式如下:
dictname = {'key':'value1', 'key2':'value2', ..., 'keyn':valuen}
| # 1.使用{} 执行结果:{'数学': 95, '英语': 92, '语文': 84} |
2、通过 fromkeys() 方法创建字典
Python 中,还可以使用 dict 字典类型提供的 fromkeys() 方法创建带有默认值的字典,具体格式为:
dictname = dict.fromkeys(list,value=None)
其中,list 参数表示字典中所有键的列表(list);value 参数表示默认值,如果不写,则为空值 None。
| # 2. 通过fromkeys创建字典 ##将列表中的元素转换成字典的key值,并且可以赋予默认value,不赋则为none 执行结果:{'语文': None, '数学': None, '英语': None} |
3、通过 dict() 映射函数创建字典
格式1:dict1 = dict(key1=value1, key2=value2, key3=value3)
格式2:demo = [('two',2), ('one',1), ('three',3)] dict2 = dict(demo)
格式3: keys = ['one', 'two', 'three']
# 还可以是字符串或元组 values = [1, 2, 3]
# 还可以是字符串或元组 dict3 = dict( zip(keys, values) )
| # 3. 通过 dict() 映射函数创建字典 执行结果: {'key1': 'test1', 'key2': 'test2'} {'one': 1, 'two': 2} {1: 'a', 2: 'b', 3: 'c'} |
Python 访问字典元素
列表和元组是通过下标来访问元素的,而字典不同,它通过键来访问对应的值。
1、Python 访问字典元素的具体格式为:dictname[key]
其中,dictname 表示字典变量的名字,key 表示键名。注意,键必须是存在的,否则会抛出异常。
| scores = {'数学': 95, '英语': 92, '语文': 84} |
2、get() 方法的语法格式为:dictname.get(key[,default])
其中,dictname 表示字典变量的名字;key 表示指定的键;default 用于指定要查询的键不存在时,此方法返回的默认值,如果不手 动指定,会返回 None。
| scores = {'数学': 95, '英语': 92, '语文': 84} 打印结果: 95 95 0 |
Python dict字典方法完全攻略
1、Python字典添加键值对 为字典添加新的键值对很简单,直接给不存在的 key 赋值即可,具体语法格式如下:dictname[key] = value
各个部分的说明:
◆ dictname 表示字典名称。
◆ key 表示新的键。
◆ value 表示新的值,只要是 Python 支持的数据类型都可以。
| scores = {'数学': 95, '英语': 92, '语文': 84} 打印结果: {'数学': 95, '英语': 92, '语文': 84, '物理': 98} 98 |
2、判断字典中是否存在指定键值对 判断字典是否包含指定键值对的键,可以使用 in 或 not in 运算符。
| scores = {'数学': 95, '英语': 92, '语文': 84} if '物理' in scores: |
3、查看dict所有方法 Python 字典的数据类型为 dict,我们可使用 dir(dict) 来查看该类型包含哪些方法
| >>> dir(dict) ['clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values’] scores = {'数学': 95, '英语': 92, '语文': 84} 打印结果: ['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values'] |
4、keys()、values() 和 items() 方法
◆ keys() 方法用于返回字典中的所有键(key);
◆ values() 方法用于返回字典中所有键对应的值(value);
◆ items() 用于返回字典中所有的键值对(key-value)。
| dict1 = {'数学': 95, '语文': 89, '英语': 90} 打印结果: 数学 语文 英语 物理 --------------- 95 89 90 100 --------------- key: 数学 value: 95 key: 语文 value: 89 key: 英语 value: 90 key: 物理 value: 100 |
Python set集合
Python 中的集合,和数学中的集合概念一样,用来保存不重复的元素,即集合中的元素都是唯一的,互不相同。 形式上看,和字典类似,Python 集合会将所有元素放在一对大括号 {} 中,相邻元素之间用“,”分隔,如下所示:
{element1,element2,...,elementn}
1、使用 {} 创建 在 Python 中,创建 set 集合可以像列表、元素和字典一样,直接将集合赋值给变量,其语法格式如下:setname = {element1,element2,...,elementn}
2、set()函数创建集合 set() 函数为 Python 的内置函数,其功能是将字符串、列表、元组、range 对象等可迭代对象转换成集合。该函数的语法格式 如下:setname = set(iteration)
3、向 set 集合中添加元素 set 集合中添加元素,可以使用 set 类型提供的 add() 方法实现,该方法的语法格式为: setname.add(element)
4、从set集合中删除元素 删除现有 set 集合中的指定元素,可以使用 remove() 方法,该方法的语法格式如下: setname.remove(element)
| set1 = {1, 2, 3, 4, 5, 1, 3} 打印结果: {1, 2, 3, 4, 5} {1, 2, 3, 4, 5, 7} {1, 2, 3, 4, 5} |
set集合常用操作(交集、并集、差集)
通过 dir(set) 命令可以查看它有哪些方法:
| >>> dir(set) ['add','clear','copy','difference','difference_update','discard','intersection','intersection_update','isdisjoint','issubset','issuperset','pop','remove','symmetric_difference', 'symmetric_difference_update', 'union', 'update'] list1 = [1, 2, 3, 4, 5] |
Python字符串切片方法
从本质上讲,字符串是由多个字符构成的,字符之间是有顺序的,这个顺序号称为索引(index)。
1、获取单个字符 在方括号[ ]中使用索引即可访问对应的字符,具体的语法格式为:strname[index]
Python 允许从字符串的两端使用索引:
◆ 当以字符串的左端(字符串的开头)为起点时,索引是从 0 开始计数的;字符串的第一个字符的索引为 0,第二个字符的索引为 1,第三个字 符串的索引为 2 ……
◆ 当以字符串的右端(字符串的末尾)为起点时,索引是从 -1 开始计数的;
字符串的倒数第一个字符的索引为 -1,倒数第二个字符的索引为 -2, 倒数第三个字符的索引为 -3 ……
2、获取多个字符(字符串截去/字符串切片) 使用[ ]除了可以获取单个字符外,还可以指定一个范围来获取多个字符,也就是一个子串或者片段,具体格式为: strname[start : end : step]
| #coding=utf-8 |
Python len()函数详解:获取对象长度
Python 中,要想知道一个对象长度,或者一个字符串占用多少个字节,可以使用 len 函数。
len 函数的基本语法格式为:len(obj)
其中 obj用于指定要进行长度统计的对象,可以是字符串、列表、元组、字典等。
以 UTF-8 编码为例,字符串“人生苦短,我用Python”所占用的字节数如图所示。
通过使用 encode() 方法,将字符串进行编码后再获取它的字节数。例如,采用 UTF-8 编码方式,计算“人生苦短,我用 Python”的字节数,可以执行如下代码:
>>> str1 = "人生苦短,我用Python"
>>> len(str1.encode()) 27
| str1 = "Python" |
Python join()方法:合并字符串
Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
语法格式:newstr = str.join(iterable)
此方法中各参数的含义如下:
◆ newstr:表示合并后生成的新字符串;
◆ str:用于指定合并时的分隔符;
◆ iterable:做合并操作的源字符串数据,允许以列表、元组等形式提供。
【例 1】将列表中的字符串合并成一个字符串。
>>> list = ['a','b','c']
>>> '.'.join(list) 'abc
| list1 = ['a', 'b', 'c','d','e'] 打印结果: a b c d e a#b#c#d#e a-b-c-d-e |
Python 字符串格式化输出
几乎任何一种编程语言,都把字符串列为最基础和不可或缺的数据类型,而拼接字符串也是学习编程必备的一种技能。
1、来自C语言的%方式 %号格式化字符串的方式继承自古老的C语言,这在很多编程语言都有类似的实现。上例的%s是一个占位符,它仅代表一段字符 串,并不是拼接的实际内容。实际的拼接内容在一个单独的%号后面,放在一个元组里。
示例: print('%s %s' % ('Hello', 'world'))
>>> Hello world 类似的占位符还有:%d(代表一个整数)、%f(代表一个浮点数)、%x(代表一个16进制数)等等。%占位符既是这种拼接方 式的特点,同时也是其限制因为每种占位符都有特定意义,实际使用起来较为麻烦。
| ame = "hello" 打印结果: 12 10 a 1.000000 1.00 hello world he |
2、format()拼接方式
示例1:
| print('我是{} 一个{}'.format('hello','world')) # 不带字段 |
3、f-string方式 f-string方式出自PEP 498(Literal String Interpolation,字面字符串插值),从Python3.6版本引入。其特点是在字符串前加 f 标 识,字符串中间则用花括号{}包裹其他字符串变量。
示例:
| name = 'world' myname = 'python_cat' words = f'Hello {name}. My name is {myname}.' print(words) >>> Hello world. My name is python_cat. name = "mike" 打印结果: 姓名:mike,年龄:18 姓名:mike, 年龄:18 A total number of 170 My name is mike |
Python三大控制结构
Python 有三大控制结构,分别是顺序结构、分支结构(选择结构)以及循环结构。
分支结构(选择结构)
分支结构又称为选择结构,程序代码根据判断条件,选择执行特定的代码。如果条件为真,程序执 行一部分代码;否则执行另一部分代码。 在 Python 语言中,选择结构的语法使用关键字 if、 elif、 else 来表示。
分支结构(多分支结构)
根据多个判断条件的结果,选择语句执行 语法结构:
if <条件1> :
<语句1>: .......
elif <条件2> :
<语句2>……
else :
<语句N>……
循环结构: for循环
循环结构是使用最多的一种结构,循环结构是指满足一定的条件下,重复执行某段代码的一种编码 结构,Python的循环结构中,常见的循环结构是for循环和while循环。 Python for循环可以遍历任何序列的项目,经常用与字符串、列表、字典等数 据结构一起使用。
for循环的语法格式如下: for iterating_var in sequence: statements(s)
2、遍历整个列表值和索引号 遍历整个列表是利用 for 循环得到列表中的每一个元素值,然后执行相同的操作。但同时需要用到 index 和 value 值的时候, python 利用 enumerate()函数。
函数enumerate()的参数为可遍历的变 量,如字符串,列表等均可,返回 enumerate 类。
3、while循环 Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程 序,以处理需要重复处理的相同任务。
其基本形式为:
while 判断条件(condition):
执行语句(statements)……
while循环不需要知道循环的次数,即无限循环 ,直到条件不满足为止。
| for index, item in enumerate(list1): |
循环结构:break 与 continue 语句
4、break 与 continue 语句 两者的作用:
✓ break 语句是立即退出 while 循环,不再运行循环中余下的代码,也不管条件判断的结果是否为真。
✓ continue 语句是结束本次循环,返回到 while 语句开始的位置,接着条件判断。如果为真,程序接着执行, 否则退出。
两者的区别:
◆ continue 语句跳出本次循环,只跳过本次循环 continue 后的语句。
◆ break 语句跳出整个循环体,循环体中未执行的循环将不会执行。
| for i in range(10): |
Python推导式(列表推导式、字典推导式、集合推导式)
推导式comprehensions(又称解析式),是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的 结构体, 共有三种推导,在Python2和3中都有支持:
◆ 列表(list)推导式
◆ 字典(dict)推导式
◆ 集合(set)推导式
一、列表推导式 列表推导式书写形式: [表达式 for 变量 in 列表] 或者 [表达式 for 变量 in 列表 if 条件]
二、字典推导式 字典推导和列表推导的使用方法是类似的,只不中括号该改成大括号。 三、集合推导式 集合推导式跟列表推导式差不多,都是对一个列表的元素全部执行相同的操作,但集合是一种无重复无序的序列
跟列表推到式的区别在于:
1.不使用中括号,使用大括号;
2.结果中无重复;
3.结果是一个set()集合
| li = [1,2,3,4,5,6,7,8,9] 执行结果: [2, 4, 6, 8, 10, 12, 14, 16, 18] [12, 14, 16, 18] # 列表推导式 执行结果: [25] {1: 'a', 2: 'b', 3: 'c', 4: 'd'} {2, 4} |



