一、数据类型分类
python3 中常见的数据类型有:
- number(数字)
- string(字符串)
- bool(布尔类型)
- list(列表)
- tuple(元组)
- set(集合)
- dictionary(字典)
python3 的六个标准数据类型中:
不可变数据(3 个): number(数字)、string(字符串)、tuple(元组);
可变数据(3 个): list(列表)、dictionary(字典)、set(集合)。
基本
- number(数字)
- string(字符串)
多字段
- list(列表)
- tuple(元组)
- dictionary(字典)
- set(集合)
# list(列表) my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8] # tuple(元组)(值不能修改) my_tuple = (1, 2, 3, 4) # dictionary(字典) my_info = {'name': '张三', 'age': 18, 'address': '北京市'} # set(集合) set01 = {1, 2, 3, 4}
二、基本数据类型
1、number(数字)
- python3 支持 int、float、bool、complex(复数)。
- 在python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 long。
- 像大多数语言一样,数值类型的赋值和计算都是很直观的。
- 内置的
type()
函数可以用来查询变量所指的对象类型。 - python可以同时为多个变量赋值,如a, b = 1, 2。
- 一个变量可以通过赋值指向不同类型的对象。
- 数值的除法包含两个运算符:/ 返回一个浮点数,// 返回一个整数。
- 在混合计算时,python会把整型转换成为浮点数
>>> 5 + 4 # 加法 9 >>> 4.3 - 2 # 减法 2.3 >>> 3 * 7 # 乘法 21 >>> 2 / 4 # 除法,得到一个浮点数 0.5 >>> 2 // 4 # 除法,得到一个整数 0 >>> 17 % 3 # 取余 2 >>> 2 ** 5 # 乘方 32
2、string(字符串)
- 反斜杠可以用来转义,使用r可以让反斜杠不发生转义。
- 字符串可以用+运算符连接在一起,用*运算符重复。
- python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。
- python中的字符串不能改变。
print(str[0:-1]) # 打印字符串第一个到倒数第二个字符(不包含倒数第一个字符) print(str[0]) # 打印字符串的第一个字符 print(str[2:5]) # 打印字符串第三到第五个字符(包含第五个字符) print(str[2:]) # 打印字符串从第三个字符开始到末尾 str_01 = 'my name is:{}, age:{}' print(str_01.format('张三', 18)) str_02 = 'my name is:{name}, age:{age}' print(str_02.format(name='张三', age=18)) str_03 = 'my name is:{name}, age:{age}' print(str_03.format_map({'name': '张三', 'age': 18}))
python 使用反斜杠\
转义特殊字符,如果你不想让反斜杠发生转义,可以在字符串前面添加一个r
,表示原始字符串:
print('ru\noob') ru oob print(r'ru\noob') ru\noob
encode()
、decode()
方法
encode()
方法以指定的编码格式编码字符串。errors参数可以指定不同的错误处理方案。decode()
方法以指定的编码格式解码 bytes 对象。默认编码为 ‘utf-8’。- 该方法返回编码后的字符串,它是一个 bytes 对象。
str.encode(encoding='utf-8',errors='strict') bytes.decode(encoding="utf-8", errors="strict")
- encoding – 要使用的编码,如: utf-8。
- errors – 设置不同错误的处理方案。默认为 ‘strict’,意为编码错误引起一个unicodeerror。 其他可能得值有 ‘ignore’, ‘replace’, ‘xmlcharrefreplace’, ‘backslashreplace’ 以及通过 codecs.register_error() 注册的任何值。
#!/usr/bin/python3 str = "菜鸟教程" str_utf8 = str.encode("utf-8", 'strict') str_gbk = str.encode("gbk") print("utf-8 编码:", str_utf8) print("gbk 编码:", str_gbk) print("utf-8 解码:", str_utf8.decode('utf-8')) print("gbk 解码:", str_gbk.decode('gbk', 'strict'))
结果:
utf-8 编码: b'\xe8\x8f\x9c\xe9\xb8\x9f\xe6\x95\x99\xe7\xa8\x8b' gbk 编码: b'\xb2\xcb\xc4\xf1\xbd\xcc\xb3\xcc' utf-8 解码: 菜鸟教程 gbk 解码: 菜鸟教程
3.2 format格式化字符串
# 1、 print('{}网址: "{}!"'.format('菜鸟教程', 'www.runoob.com')) # 2、 print('{name}网址: {site}'.format(name='菜鸟教程', site='www.runoob.com')) # 3、 print('{0} 和 {1}'.format('google', 'runoob')) # 可以任意组合 print('站点列表 {0}, {1}, 和 {other}。'.format('google', 'runoob', other='taobao')) # 4、 table = {'google': 1, 'runoob': 2, 'taobao': 3} print('runoob: {0[runoob]:d}; google: {0[google]:d}; taobao: {0[taobao]:d}'.format(table))
3、bool(布尔类型)
布尔类型即 true 或 false。
在 python 中,true 和 false 都是关键字,表示布尔值。
布尔类型可以用来控制程序的流程,比如判断某个条件是否成立,或者在某个条件满足时执行某段代码。
布尔类型特点:
- 布尔类型只有两个值:true 和 false。
- 布尔类型可以和其他数据类型进行比较,比如数字、字符串等。在比较时,python 会将 true 视为 1,false 视为 0。
- 布尔类型可以和逻辑运算符一起使用,包括 and、or 和 not。这些运算符可以用来组合多个布尔表达式,生成一个新的布尔值。
- 布尔类型也可以被转换成其他数据类型,比如整数、浮点数和字符串。在转换时,true 会被转换成 1,false 会被转换成 0。
a = true b = false # 比较运算符 print(2 < 3) # true print(2 == 3) # false # 逻辑运算符 print(a and b) # false print(a or b) # true print(not a) # false # 类型转换 print(int(a)) # 1 print(float(b)) # 0.0 print(str(a)) # "true"
python3 中,bool
是 int
的子类,true
和false
可以和数字相加,true==1、false==0
会返回true
,但可以通过is
来判断类型。
a1 = true print(type(a1)) print(a1 + 100) <class 'bool'> 101
4、bytes
字符串转为bytes
# 解析为bytes:b'hello,world' print('hello,world'.encode())
bytes
转为字符串
# 创建一个bytes对象 bytes_data = b'hello, world!' # b'hello, world!' print(bytes_data) # 将bytes对象转换为字符串 string_data = bytes_data.decode('utf-8') print(string_data)
三、多值存储
1、list(列表)
增、删、改、查:
my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8] # 1、增 my_list.append('333') # 将另一个集合中添加到列表中 insert_list = [1, 23] my_list.extend(insert_list) # 指定位置前插入元素 my_list.insert(2, '34') # 2、删 my_list.remove() # 3、改 my_list[1] = '张三' # 4、查 # 查看是否存在于集合中 print('张三' in my_list) # 查询所在索引 my_list.index('张三') my_list.index('张三', 1, 4) # 查询数量 my_list.count('张三')
其它
# 循环 for one in my_list: # print(one) print(one, end='==') print(one, end='==\n%%% ') # 排序 # 排序-正序 my_list.sort() # 排序-倒叙 my_list.sort(reverse=true)
函数内置方法
方法 | 序号 |
---|---|
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( key=none, reverse=false) | 对原列表进行排序 |
list.clear() | 清空列表 |
list.copy() | 复制列表 |
2、tuple(元组)
python的元组与列表类似,不同之处在于元组的元素不能修改。
# tuple元组 my_tuple = (1, 2, 3, 4) # 查-某个值 print(my_tuple[1]) # 查—查询所在索引位置(前闭右开区间)(起始索引:0) print(my_tuple.index(2, 1, 3)) # 查-某值数量 print(my_tuple.count(1))
python元组包含了以下内置函数
函数 | 方法及描述 | 实例 |
---|---|---|
len(tuple) | 计算元组元素个数 | >>> tuple1 = ('google', 'runoob', 'taobao') |
max(tuple) | 返回元组中元素最大值 | max(tuple2) |
min(tuple) | 返回元组中元素最小值 | min(tuple2) |
tuple(iterable) | 将可迭代系列转换为元组 | tuple1=tuple(['google', 'taobao', 'runoob', 'baidu']) |
3、dictionary(字典)
增删改查
my_info = {'name': '张三', 'age': 18, 'address': '北京市'} # 1、查询元素 # 查-查询单个(无值异常) print(my_info['name']) print(my_info['age']) # 查-查询单个(无值返回 none) print(my_info.get('name1')) # 查-查询单个(无值返回 指定值) print(my_info.get('name2', '李四')) # 2、修改元素 my_info['name'] = '王五' # 3、添加元素 # 添加元素-键不存在则添加 my_info['id'] = 1234 # 4、删除元素 # 删除元素-删除单个元素 del my_info['id'] # 删除-删除字典(查询会报错 del my_info # 删除—清空字段(值为{}) my_info.clear()
其它api
# 5、其它api # 测量字典中,键值对的个数 print(len(my_info)) # 返回一个包含字典所有key的列表 print(my_info.keys()) # 返回一个包含字典所有value的列表 print(my_info.values()) # 返回一个包含所有(键,值)元祖的列表 print(my_info.items())
方法 | 函数及描述 |
---|---|
dict.clear() | 删除字典内所有元素 |
dict.copy() | 返回一个字典的浅复制 |
dict.fromkeys() | 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 |
dict.get(key, default=none) | 返回指定键的值,如果键不在字典中返回 default 设置的默认值 |
key in dict | 如果键在字典dict里返回true,否则返回false |
dict.items() | 以列表返回一个视图对象 |
dict.keys() | 返回一个视图对象 |
dict.setdefault(key, default=none) | 类似, 但如果键不存在于字典中,将会添加键并将值设为default |
dict.update(dict2) | 把字典dict2的键/值对更新到dict里 |
dict.values() | 返回一个视图对象 |
pop(key[,default\]) | 删除字典 key(键)所对应的值,返回被删除的值。 |
popitem() | 返回并删除字典中的最后一对键和值。 |
4、set(集合)
- 集合(set)是一个无序的不重复元素序列。
- 集合中的元素不会重复,并且可以进行交集、并集、差集等常见的集合操作。
- 可以使用大括号 { } 创建集合,元素之间用逗号 , 分隔, 或者也可以使用 set() 函数创建集合。
# 0、创建集合 set01 = {1, 2, 3, 4} # 直接使用大括号创建集合 set02 = set([4, 5, 6, 7]) # 使用 set() 函数从列表创建集合 # 1、增 # 1-1 将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。 set01.add(100) # 1-2 添加元素,且参数可以是列表,元组,字典等 set01.update([1, 2, ]) # 2、删 # 2-1 将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误 set01.remove(1) # 2-2 移除集合中的元素,且如果元素不存在,不会发生错误 set01.discard(1) # 2-3 随机删除集合中的一个元素 s.pop() # 3、其它 # 判断元素是否在集合内(false) print('1' in set03) # 计算集合元素个数 print(len(set01)) # 清空集合 set01.clear()
集合内置方法完整列表
方法 | 描述 |
---|---|
add() | 为集合添加元素 |
clear() | 移除集合中的所有元素 |
copy() | 拷贝一个集合 |
difference() | 返回多个集合的差集 |
difference_update() | 移除集合中的元素,该元素在指定的集合也存在。 |
discard() | 删除集合中指定的元素 |
intersection() | 返回集合的交集 |
intersection_update() | 返回集合的交集。 |
isdisjoint() | 判断两个集合是否包含相同的元素,如果没有返回 true,否则返回 false。 |
issubset() | 判断指定集合是否为该方法参数集合的子集。 |
issuperset() | 判断该方法的参数集合是否为指定集合的子集 |
pop() | 随机移除元素 |
remove() | 移除指定元素 |
symmetric_difference() | 返回两个集合中不重复的元素集合。 |
symmetric_difference_update() | 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。 |
union() | 返回两个集合的并集 |
update() | 给集合添加元素 |
len() | 计算集合元素个数 |
四、其它
1、json
方法 | 作用 | 返回类型 |
---|---|---|
eval(字符串表达式) | eval() 函数用来执行一个【字符串表达式】,并返回表达式的值。 | list、dict、tuple |
json.dumps() | 将python对象编码成json字符串 | 返回json字符串 |
json.loads() | 将json字符串解码成python对象 | 返回python对象 |
json.dump() | 将python中的对象转化成json储存到文件中 | 无返回 |
json.load() | 将文件中的json的格式转化成python对象提取出来 | 返回python对象 |
五、其它函数
1、print()
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=false)
objects
:复数,表示可以一次输出多个对象。输出多个对象时,需要用 , 分隔。sep
:用来间隔多个对象,默认值是一个空格。end
:用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符串。file
:要写入的文件对象。flush
:输出是否被缓存通常决定于 file,但如果 flush 关键字参数为 true,流会被强制刷新。
# 1 2 3 4 5 print('1', '2', '3', '4', '5') # 1+2+3 print('1', '2', '3', sep='+') # 1++2++3== print('1', '2', '3', sep='++', end='==')
总结
到此这篇关于python常见数据类型处理的文章就介绍到这了,更多相关python数据类型处理内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论