Python常见数据类型操作指南

一、数据类型分类

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 中,boolint 的子类,TrueFalse可以和数字相加,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='==')
    

    作者:ha_lydms

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python常见数据类型操作指南

    发表回复