在学习新的内容之前,我们对前面所学内容做一些补充。
第一部分,变量的赋值与交换。
一、链式赋值(Chained Assignment)
打开Python控制台,在提示符后方我们进行下面的操作。
>>> a = b = c = 0 >>> a # 查看变量a的值 0 >>> b # 查看变量b的值 0 >>> c # 查看变量c的值 0
通过上方的示例大家能够看出,当多个变量具有相同的值,我们可以通过这种多个变量之间写等号的方式进行赋值。
二、序列解包(Sequence Unpacking)
如果我们给多个变量写入不同的值呢?
我们可以采用下面这种方式。
>>> a,b,c = 1,2,3 # 多变量赋值 >>> a # 查看变量a的值 1 >>> b # 查看变量b的值 2 >>> c # 查看变量c的值 3
大家能够看到,我们可以同时对多个变量进行赋值操作,只需要用逗号把它们隔开,并且等号右侧值的数量和变量数量相同即可。
这是什么原理呢?
大家再来继续尝试。
>>> 1,2,3 (1, 2, 3)
大家能够看到,当我们输入多个值并用逗号分隔,实际上是把这些值变成了一个序列(元组)。
Python会自动把这个序列分解,给到对应的每一个变量。
既然能够对序列进行解包,那么列表也一样。
我们再来做尝试。
>>> a,b,c = [1,2,3] >>> a 1 >>> b 2 >>> c 3
实际上,字符串、列表、元组、集合、字典等都可以进行类似的操作。
那么,如果右侧值的数量与左侧不相等呢?
我们可以变量名称前面写入“*”,这样该变量的值会变成一个列表。
我们来做两个尝试。
>>> *a,b,c = 1,2 >>> a [] >>> b 1 >>> c 2
>>> *a,b,c = 1,2,3,4 >>> a [1,2] >>> b 3 >>> c 4
当最左侧变量带有“*”,程序会先对右侧变量赋值,然后将剩余的值(或空值)写入带有“*”的变量。
“*”可以写在任意一个变量的前方,但是只能有一个。
由此还能够看出,“*”写在最右侧变量前方时,与写在最左侧变量前方时正好相反。
而“*”写在中间某个变量前方时,会先对应着为两侧变量赋值,然后将剩余的值(或空值)写入带有“*”的变量。
三、变量交换
我们先来做个尝试。
>>> a,b = 1,2 >>> a,b = b,a >>> a 2 >>> b 1
大家能够看到,我们可以通过上面这种方式对变量的值进行互换。
这里只是通过2个变量互换举例,实际上可以支持多个变量的互换。
四、增量赋值
增量赋值我们在之前的关于运算符教程中已经接触过。
>>> a = 1 >>> a += 1 >>> a 2
具体内容参考Python3萌新入门笔记(13)的赋值运算符部分。
第二部分,进制与数据类型
一、进制
所谓进制就是人们规定的一种进位方法。
2进制就是满2进1位;
8进制就是满8进1位;
10进制就是满10进1位;
16进制就是满16进1位。
不过,在Python中这些进制有不同的表达方式。
>>> 0x11 # 非10进制以0开头,字母x代表16进制 17 >>> 0o11 # 非10进制以0开头,字母o代表8进制 9 >>> 0b11 # 非10进制以0开头,字母b代表2进制 3
关于进制的内容,先了解这些就可以了。
二、数据类型
Python中有六种标准数据类型,分别为Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Set(集合)和Dict(字典)。
这里我们主要补充一下Number(数字)和String(字符串)两种类型。
首先,数字类型包含:Int(整数)、Float(浮点数)、Bool(布尔)和Complex(复数)。
整型(Int):即整数,可以通过int(x[,base=10])函数将非整数或整数组成的字符串以及字节转换成整数。
print(int()) # 显示输出结果为0 print(int(1.23)) # 显示输出结果为1 print(int('5')) # 显示输出结果为5 print(int('0xF',16)) # 显示输出结果为15
浮点型(Float):即小数,float([x])函数将非整数或整数组成的字符串以及字节转换成整数。
print(float()) # 显示输出结果为0.0 print(float(1)) # 显示输出结果为1.0 print(float('5')) # 显示输出结果为5.0 print(float(0xf)) # 显示输出结果为15.0
布尔类型(Bool):通过bool(x)函数,能够得到参数x的布尔值。
print(bool()) # 显示输出结果为False print(bool(False)) # 显示输出结果为False print(bool('')) # 显示输出结果为False print(bool(0)) # 显示输出结果为False print(bool(None)) # 显示输出结果为False print(bool([])) # 显示输出结果为False print(bool(())) # 显示输出结果为False print(bool({})) # 显示输出结果为False
在Python中除了空值、”、False、0、()、[]、{}、None为False,其它均为True。
复数(Complex):能够通过complex(x)函数创建一个复数。
print(complex(1)) # 显示输出结果为:(1+0j) print(complex('2+1j')) # 显示输出结果为:(2+1j) print(complex(2, 5)) # 显示输出结果为:(2+5j)
接下来,是字符串(String)类型。
字符串(String):通过str(object=”)函数能够将对象转换为字符串。
错误示例:
a = str(1) b = a + 1
当我们把数字转换为字符串,进行加法运算时,会抛出异常。
TypeError: unsupported operand type(s) for -: ‘str’ and ‘int’
类型错误:不被支持的操作数类型:字符串和整型
第三部分、字符串相关函数
一、迭代对象合并为字符串
join(iterable)函数能够将可迭代对象的元素或多个字符串合并为一个字符串,参数iterable为可迭代对象。如果参数不是字符串会抛出类型错误的异常,包括字节对象。此函数通过元素间的分隔符调用。
lst1 = '1', '2', '3' print('+'.join(lst1)) # 显示输出结果为:1+2+3 lst2 = ['1', '2', '3'] print(''.join(lst2)) # 显示输出结果为:123
二、字符串内单词首字母大写
这里需要使用string模块中的capwords(s[,sep])函数,参数s为需要转换的字符串,参数sep为分隔符,省略参数sep时,每个单词均转换为首字母大写单词;未省略参数sep时,除了第一个单词首字母转换为大写,分隔符后方的第一个字母均转换为大写。
示例代码:
import string old_str = 'my name is xiaolou.' new_str1 = string.capwords(old_str) new_str2 = string.capwords(old_str,'s ') print(new_str1) # 显示输出结果为:My Name Is Xiaolou. print(new_str2) # 显示输出结果为:My name is Xiaolou.
三、多字符转换
这里需要使用字符串对象调用translate(table)函数,参数table为转换表;
很显然使用这个函数我们需要先创建转换表,转换表包含256个 ASCII字符。
我们并不需要手工去创建转换表,而是可以使用关键字str调用maketrans(x[,y[,z]])函数创建转换表。
只有1个参数时,必须输入一个字典,字典的键值可以是ASCII字符或对应的数字序号,转换时会用值对应的字符替换键对应的字符。
table=str.maketrans({111:'*'}) print('photo'.translate(table)) # 显示输出结果为:ph*t*
输入2个参数时,前面的参数是被替换的字符,后面的参数是替换后的字符。
table=str.maketrans('o','*') print('photo'.translate(table)) # 显示输出结果为:ph*t*
输入3个参数时,最后一个参数必须是字符串,包含在这个字符串中的每一个字符都被替换为None(空值)。
注意:函数会先完成第3个参数的替换,再进行前两个参数的替换。
table=str.maketrans('o','*','po') print('photo'.translate(table)) # 显示输出结果为:ht
第四部分、字符串转义字符
\:在字符串结尾时为续行符
\\:斜杠
\’:单引号
\”:双引号
\a:响铃
\b:退格符
\n:换行符
\t:横向制表符
\v:纵向制表符
\r:回车符
\f:换页符
\ooo:八进制字符
\xhh:十六进制字符
\000:终止符
\other:其它的字符以普通格式输出
\N{name}:Unicode数据库中的字符名
\uhhhh:值为16位的十六进制字符
\Uhhhhhhhh:值为32位的十六进制字符
本节知识点:
1、变量赋值与交互
2、进制与数据类型
3、字符串转换函数
4、字符串转义字符
本节英文单词与中文释义:
1、unpacking(unpack):拆包
2、chained(chain):链条式
3、assignment:分配
4、unsupported(unsupport):不支持
5、operand:操作数
6、join:连接
7、make trans:使…转移
8、trans late:转移原来的
9、table:表
10、photo:照片
转载请注明:魔力Python » Python3萌新入门笔记(24)