前言
本文主要学习 Python 的变量和数据类型。
变量
Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
在 Python 中,变量就是变量,它没有类型,我们所说的“类型”是变量所指的内存中对象的类型。
Python 中等号(=)用来给变量赋值,等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。
变量赋值
name = '朝雾轻寒'
其中 name 是变量名,变量 name 的值为'朝雾轻寒'。
多个变量赋值
Python允许你同时为多个变量赋值。例如:
a = b = c = 1
以上实例,创建一个整型对象,值为1,三个变量被分配到相同的内存空间上。
也可以为多个对象指定多个变量。例如:
a, b, c = 1, 2, 'zwqh'
以上实例,两个整型对象 1 和 2 的分配给变量 a 和 b,字符串对象 'zwqh' 分配给变量 c。
数据类型
Python3 中有六个标准的数据类型:Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Sets(集合)、Dictionary(字典)。
数字(Number)
Python 数字数据类型是用来存储数值的。
数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将会重新分配内存空间。
当你指定一个值时,Number对象就会被创建:
var1 = 1
var2 = 10
var3 = 100
也可以使用del语句删除一些对象的引用。
del语句的语法是:
del var1[,var2[,var3[....,varN]]]]
可以通过使用del语句删除单个或多个对象的引用。例如:
del var1
del var2, var3
Python3 支持 int、float、bool、complex(复数)。
注意:在Python2中是没有布尔型的,它用数字0表示False,用1表示True。到Python3中,把True和False定义成关键字了,但它们的值还是1和0,它们可以和数字相加。
Python 支持三种不同的数值类型:
- 整形(int) - 通常被称为是整型或整数,是正或负整数,不带小数点。Python3 整型是没有限制大小的,可以当作 Long 类型使用,所以 Python3 没有 Python2 的 Long 类型。
- 浮点型(float) - 浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 10^2 = 250)。
- 复数(complex) - 复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。
数值类型实例
int | float | complex |
---|---|---|
10 | 0.0 | 3.14j |
100 | 15.20 | 45.j |
-786 | -21.9 | 9.322e-36j |
080 | 32.3+e18 | .876j |
-0490 | -90. | -.6545+0J |
-0x260 | -32.54e100 | 3e+26J |
0x69 | 70.2-E12 | 4.53e-7j |
字符串(String)
Python中的字符串是由数字、字母、下划线组成的一串字符,用单引号'
、双引号"
或三引号'''
括起来,同时使用反斜杠\
转义特殊字符。
取值顺序
python的字串列表有2种取值顺序:
- 从左到右索引默认0开始的,最大范围是字符串长度少1
- 从右到左索引默认-1开始的,最大范围是字符串开头
P | y | t | h | o | n |
---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 |
-6 | -5 | -4 | -3 | -2 | -1 |
如果要从字符串中获取一段子字符串的话,可以使用 [头下标:尾下标] 来截取相应的字符串,其中下标是从 0 开始算起,可以是正数或负数,下标可以为空表示取到头或尾。
[头下标:尾下标] 获取的子字符串包含头下标的字符,但不包含尾下标的字符。比如:
s = 'python'
print(s[1:5])
运行结果为:
ytho
加号(+)是字符串连接运算符,星号(*)是重复操作。以下是一些字符串的常见操作:
s = '我用Python'
print(s + '!!!')
print(s * 2)
切片
print(s[0]) # '我'
print(s[-1]) # 'n'
print(s[3:]) # 'ython'
print(s[:3]) # '我用P'
print(s[::-1]) # 'nohtyP用我'
替换,还可以用正则表达式替换
print(s.replace('Python', 'Java')) # '我用Java'
查找
print(s.find('P')) # 2 , 返回第一次出现的子字符串的下标
print(s.find('t', 2)) # 4 , 设定下标2开始查找
print(s.find('zwqh')) # -1 , 查找不到返回-1
print(s.index('y')) # 3 , 返回第一次出现的子串的下标
print(s.rfind('P')) # 2 , 返回字符串最后一次出现的位置(从右向左查询),如果没有匹配项则返回-1
print(s.rindex('P')) # 2 , 返回子字符串 str 在字符串中最后出现的位置,如果没有匹配的字符串会报异常,你可以指定可选参数[beg:end]设置查找的区间
# print(s.index('p')) # 不同于find(), 查找不到会抛出异常
大小写转换
print(s.upper()) # '我用PYTHON' , 转大写
print(s.lower()) # '我用python' , 转小写
print(s.swapcase()) # '我用pYTHON' , 大小写互转
print('python'.capitalize()) # 'Python' , 把首字母大写
print(s.istitle()) # True , 检测字符串中所有的单词拼写首字母是否为大写,且其他字母为小写
print(s.isupper()) # False , 检测字符串中所有的字母是否都为大写
print(s.islower()) # False , 检测字符串中所有的字母是否都为小写
去除指定字符
print('000Python000'.strip('0')) # 'Python' , strip()方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列
print(' Python '.strip()) # 'Python'
print('123Python321'.strip('123')) # 'Python' , 字符序列为 '123'
print('123Python321'.lstrip('123')) # 'Python321' , lstrip()方法用于截掉字符串左边的空格或指定字符
print('123Python32123'.rstrip('312')) # '123Python' ,rstrip()方法用于删除 string 字符串末尾的指定字符(默认为空格).
连接与分割,使用 + 连接字符串,每次操作会重新计算、开辟、释放内存,效率很低,所以推荐使用join
ss = ['2020', '01', '01', '00:00']
x = '-'.join(ss)
print(x) # '2020-01-01-00:00'
y = x.split('-')
print(y) # ['2020', '01', '01', '00:00']
格式化
print('%s:%s' % ('年龄', 25)) # '年龄 25'
print('{}:{}'.format('年龄', 25)) # '年龄 25' 推荐使用format格式化字符串
print('{0},{1},{0}'.format('年龄', 25)) # '年龄,25,年龄'
print('{name}:{value}'.format(name='年龄', value=25)) # '年龄:25'
编码与解码
# encode 将字符转换为字节
print(s.encode()) # 默认编码是 UTF-8,输出: b'\xe6\x88\x91\xe7\x94\xa8Python'
print(s.encode('gbk')) # 输出:b'\xce\xd2\xd3\xc3Python'
# decode s将字节转换为字符
print(s.encode().decode('utf8')) # 输出 '我用Python'
print(s.encode('gbk').decode('gbk')) # 输出 '我用Python'
列表(List)
List(列表) 是 Python 中使用最频繁的数据类型,类似 Java List 集合。
列表是写在方括号 [] 之间、用逗号分隔开的元素列表,列表可以完成大多数集合类的数据结构实现。
列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套),列表中的元素是可以改变。
示例:
list1 = ['name', 'zwqh', 'height', 175, 'weight', 65.5]
list2 = ['name', 'zwqx', 'age', '25']
print(list1) # 输出完整列表
print(list1[1]) # 'zwqh'
print(list1[2:4]) # ['height', 175] 输出第三个至第四个元素
print(list1[2:]) # ['height', 175, 'weight', 65.5] 输出从第三个开始至列表末尾的所有元素
print(list2 * 2) # ['name', 'zwqx', 'age', '25', 'name', 'zwqx', 'age', '25'] 输出列表两次
print(list1 + list2) # ['name', 'zwqh', 'height', 175, 'weight', 65.5, 'name', 'zwqx', 'age', '25'] 打印组合的列表
# 搜索
print(list1.index('zwqh')) # 1,获取指定元素的下标
# 增加元素
list1.append('!!!')
print(list1) # ['name', 'zwqh', 'height', 175, 'weight', 65.5, '!!!']
# 删除元素
list1.remove('!!!')
print(list1) # ['name', 'zwqh', 'height', 175, 'weight', 65.5]
元组(Tuple)
元组是另一个数据类型,类似于 List(列表)。
元组用 () 标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。
示例:
tuple1 = ('name', 'zwqh', 'height', 175, 'weight', 65.5)
tuple2 = ('name', 'zwqx', 'age', '25')
print(tuple1) # 输出完整列表
print(tuple1[1]) # 'zwqh' 输出元组的第一个元素
print(tuple1[2:4]) # ('height', 175) 输出第三个至第四个元素
print(tuple1[2:]) # ('height', 175, 'weight', 65.5) 输出从第三个开始至列表末尾的所有元素
print(tuple2 * 2) # ('name', 'zwqx', 'age', '25', 'name', 'zwqx', 'age', '25') 输出元组两次
print(tuple1 + tuple2) # ('name', 'zwqh', 'height', 175, 'weight', 65.5, 'name', 'zwqx', 'age', '25') 打印组合的元组
print(tuple1.index('zwqh')) # 1 获取指定元素的下标
print(tuple1.count('age')) # 0 获取元素出现的次数
print(tuple1.__len__()) # 6 获取元组长度
集合(Set)
集合(set)是一个无序不重复元素的序列,类似 Java Set 集合,使用大括号 {} 或者 set() 函数创建集合
注意:创建一个空集合必须用 set() 而不是 {} ,因为 {} 是用来创建一个空字典。
集合不能被切片也不能被索引。
示例:
set1 = {'name', 'zwqh', 'height', 175, 'weight', 65.5}
set2 = {'name', 'zwqx', 'age', '25'}
print(set1) # 输出完整集合
# 添加
set1.add('!!!')
print(set1) # {65.5, 'name', 'zwqh', 'weight', 175, '!!!', 'height'} 这个输出是无序的,再次执行顺序就可能变了
# 删除
set1.remove('!!!') # 用于移除指定的集合元素
print(set1) # {65.5, 'height', 'weight', 175, 'name', 'zwqh'}
set2.discard('age') # 用于移除指定的集合元素,该方法不同于 remove() 方法,因为 remove() 方法在移除一个不存在的元素时会发生错误,而 discard() 方法不会
print(set2) # {'zwqx', 'name', '25'}
字典(Dictionary)
字典是一种映射类型,它的元素是键值对,类似 Java Map 集合,字典的关键字必须为不可变类型,且不能重复。创建空字典使用 {} 。
示例:
userInfo = {
'username': '朝雾轻寒',
'qq': '466595865',
'gender': '男'
}
print(userInfo) # {'username': '朝雾轻寒', 'qq': '466595865', 'gender': '男'}
print(userInfo['username']) # '朝雾轻寒' 输出键为 'username' 的值
print(userInfo.keys()) # dict_keys(['username', 'qq', 'gender']) 输出所有键
print(userInfo.values()) # dict_values(['朝雾轻寒', '466595865', '男']) 输出所有值
print(len(userInfo)) # 3 输出字段长度
小结
这篇文章学习了 Python 的变量和六种数据类型,通过示例演示了变量的使用,以及六种数据类型的常用操作。
评论区