zoukankan      html  css  js  c++  java
  • Python之常用数据类型详解

    tuple 元组 

     1 # 定义
     2 temp = (2, )  # 规范定义,单个元素的元组
     3 tem = 2,      # 可行,但不规范定义
     4 tep = ()      # 空元组
     5 
     6 tp = (1, 'ss', 3.5, [6, 'dd'])   # 元组中 可存放任何的 数据类型 int、float、str、bool、字符串、字典、列表等
     7 # 通过索引获取元组中的元素
     8 print(tp[3])             # 输出:[6, 'dd']
     9 print(tp[3][1])          # 输出:'dd'
    10 print(tp[::-1])          # 输出:([6, 'dd'], 3.5, 'ss', 1)

    元组解包

     1 # 元组解包
     2 c1, c2, c3, c4 = (3, 'd', 5.6), 7.8, 'ee', 4 < 5
     3 print('''
     4 c1类型:{},c1 = {}
     5 c2类型:{},c2 = {}
     6 c3类型:{},c3 = {}
     7 c4类型:{},c4 = {}
     8  '''.format(type(c1), c1, type(c2), c2, type(c3), c3, type(c4), c4))
     9 
    10 # 输出:
    11 c1类型:<class 'tuple'>,c1 = (3, 'd', 5.6)
    12 c2类型:<class 'float'>,c2 = 7.8
    13 c3类型:<class 'str'>,c3 = ee
    14 c4类型:<class 'bool'>,c4 = True

    list 列表

    1 # 定义
    2 li = [1]                                 # 单个元素的列表
    3 ls = [1, 'ss', 3.5, [6, 'dd'], 4 < 5]    # 字典也可存放任何的数据类型
    4 
    5 #通过索引获取列表中的元素
    6 print(ls[3])                             # 输出:[6, 'dd']
    7 print(ls[3][1])                          # 输出:'dd'
    8 print(ls[::-2])                          # 输出:[True, 3.5, 1]

    列表操作

     1 name = ['妲己', '安琪拉', '嫦娥', '小乔', '周瑜']
     2 
     3 # append()  列表最后新增1个元素,仅1个参数
     4 name.append('高渐离')
     5 print(name)                                #输出:['妲己', '安琪拉', '嫦娥', '小乔', '周瑜', '高渐离']
     6 
     7 # extend()  以元组、列表的形式,可添加多个元素
     8 name.extend(['甄姬', '嬴政', '武则天'])      # name=['妲己', '安琪拉', '嫦娥', '小乔', '周瑜', '甄姬', '嬴政', '武则天']
     9 
    10 # insert(index, arg)  在列表中指定位置,插入元素
    11 name.insert(3, '王昭君')                    # name=['妲己', '安琪拉', '嫦娥', '王昭君', '小乔', '周瑜']
    12 
    13 # reverse() 列表 倒序,无参数
    14 name.reverse()
    15 print(name)                               # 输出:['周瑜', '小乔', '嫦娥', '安琪拉', '妲己']
    16 
    17 # index()  查找指定字符串并返回索引,若字符串不存在,将报错
    18 print(name.index('小乔'))                 # 输出:3
    19 
    20 # pop(-2)  删除指定索引的元素,无参数时,默认删除列表最后一个
    21 name.pop(-2)                             # name=['妲己', '安琪拉', '嫦娥', '周瑜']
    22 
    23 # remove()  删除找到的第一个指定元素,没有找到要删除的元素,报错
    24 name.remove('安琪拉')                     # 输出:['妲己', '嫦娥', '小乔', '周瑜']
    25 
    26 # count() 返回指定元素 在列表中存在的次数
    27 name.count('小乔')                        # 输出:1
    28 
    29 # clear() 清空列表,无参数 
    30 name.clear()                             # 输出:[]
    31 
    32 # del 
    33 del name[1:4:2]                          # 删除元素,可通过元素索引、切片
    34 print(name)                              # 输出:['妲己', '嫦娥', '周瑜']
    35 
    36 del name                                 # 删除列表

    列表中的切片操作

    1 # 索引1-3的元素,被指定字符替换
    2 shooter = ['鲁班', '后羿', '孙尚香', '黄忠', '伽罗', '虞姬']
    3 shooter[1:4] = ['马可波罗', '狄仁杰', '李元芳', '百里守约', '成吉思汗']    # 可以用元组、列表 赋值
    4 print(shooter)                                                       # 输出:['鲁班', '马可波罗', '狄仁杰', '李元芳', '百里守约', '成吉思汗', '伽罗', '虞姬']
    5 
    6 shooter[1:4] = '百里守约'                                             # 用字符串 赋值
    7 print(shooter)                                                       # 输出:['鲁班', '百', '里', '守', '约', '伽罗', '虞姬']

    copy() 复制

     1 # copy()   复制列表,无参数
     2 name = ['妲己', '安琪拉', '嫦娥', '小乔', '周瑜']
     3 name1 = name                           # name1 和 name 是同一个列表,id相同
     4 name_copy = name.copy()                # 创建一个新列表name_copy,值同name, id 不同
     5 print(id(name))                        # 输出:2034224161416
     6 print(id(name1))                       # 输出:2034224161416
     7 print(id(name_copy))                   # 输出:2034224161480
     8 
     9 name[2] = '诸葛亮'                      # 改变原列表name的值
    10 print("""
    11 name = {}
    12 name1 = {}
    13 name_copy = {}
    14 """.format(name, name1, name_copy))
    15 
    16 """
    17 name 和 name1 的值,均为:['妲己', '安琪拉', '诸葛亮', '小乔', '周瑜']
    18 name_copy 值为:['妲己', '安琪拉', '嫦娥', '小乔', '周瑜']
    19 """

    sort()

     1 # sort() 对列表中元素(相同类型:字符串、数字),进行升序排序(ASCII)
     2 num = [2, 5, 1, 7, 5.5]
     3 num.sort()
     4 print(num)                             # 输出:[1, 2, 5, 5.5, 7]
     5 
     6 str1 = ['d', 'D', 'a', 'F', 'G', 'f']
     7 str1.sort()
     8 print(str1)                            # 输出:['D', 'F', 'G', 'a', 'd', 'f']
     9 
    10 # 对列表中元素类型为 元组/列表的,元组/列表中,第一个元素的类型需相同
    11 club = [(7, 'a', 2, 'ss'), (6, 'x'), (0, 1, 'z')]
    12 club.sort()
    13 print(club)                            # 输出:[(0, 1, 'z'), (6, 'x'), (7, 'a', 2, 'ss')]
    14 
    15 # 列表中的元素需为同一种类型,才能用sort()排序,否则 报错

    列表中的元组,元组中的列表

    1 # 列表中,含有元组
    2 list_tuple = ['诸葛亮', '张良', '王昭君', ('安琪拉', '妲己')]
    3 list_tuple[-1][0] = '甄姬'             # 试图 将元组元素'安琪拉',修改为‘甄姬’,程序报错
    4 list_tuple[-1] = '貂蝉'                # 列表中的元组 只能作为一个整体被替换
    5 
    6 # 元组中的列表
    7 tuple_list = ('张良', '王昭君', ['安琪拉', '妲己'])
    8 tuple_list[-1][0] = '高渐离'           # 元组中的列表,列表中的元素可被修改 ,但列表不可作为一个整体 被 替换
    9 tuple_list[-1] = '周瑜'               # 错误操作

    dict 字典

     1 # 定义
     2 dic = {'key1':'value1', 'key2':'value2',……}  # key 必须是唯一的
     3 
     4 # tuple类型数据,可作为key
     5 # list 和 dict 不能作为key
     6 
     7 dic_name = {1: '庄周', 'key': 6, ('list', 'tuple'): ([1, 2, 'ss'], (5, 6, 'ee'))}
     8 print(dic_name[('list', 'tuple')])           # 输出:([1, 2, 'ss'], (5, 6, 'ee'))
     9 
    10 # hero1 = {['name', 'age']: 'ss'}            # 运行会报错
     1 # 通过 key 获取/修改 对应的value值
     2 hero = {'na1': '庄周', 'na2': '明世隐', 'na3': '孙膑', 'na4': '鬼谷子'}
     3 
     4 # 获取值
     5 print(hero['na1'])                           # 输出:庄周
     6 print(hero.get('na3'))                       # 输出:孙膑
     7 
     8 # 修改值
     9 hero['na2'] = '东皇太一'
    10 print(hero)                                  # 输出:{'na1': '庄周', 'na2': '东皇太一', 'na3': '孙膑', 'na4': '鬼谷子'}
    1 # 获取字典中所有的键值对
    2 print(hero.items())                           # 输出:dict_items([('na1', '庄周'), ('na2', '明世隐'), ('na3', '孙膑'), ('na4', '鬼谷子')])
    3 
    4 #将获取的键值对 转化为 list
    5 dict_items = list(hero.items())
    6 
    7 # 通过索引获取
    8 print(dict_items[1, 1])                        # 输出: 明世隐
     1 # 获取字典中所有的key
     2 print(hero.keys())                            # 输出:dict_keys(['na1', 'na2', 'na3', 'na4'])
     3 
     4 # 获取字典中所有的value
     5 print(hero.values())                          # 输出:dict_values(['庄周', '明世隐', '孙膑', '鬼谷子'])
     6 
     7 # 清空字典
     8 hero.clear()
     9 print(hero)                                   # 输出:{}
    10 
    11 # 通过key 删除字典中的 key-value 值对
    12 hero.pop('na1')                               # 必须传一个参数key
    13 print(hero)                                   # 输出: {'na2': '明世隐', 'na3': '孙膑', 'na4': '鬼谷子'}
    14 
    15 # 删除字典最后一个键值对,并返回这个键值对,无需传参
    16 print(hero.popitem())                         # 输出:('na4': '鬼谷子')
    17 print(hero)                                   # 输出:{'na1': '庄周', 'na2': '明世隐', 'na3': '孙膑'}
    18 
    19 # 复制字典
    20 hero_copy = hero.copy()

    fromkeys([key, ……], '默认值')   字典重定义

    1 # 重定义的单个/多个key,  都是相同的默认值
    2 hero_redefined = hero.fromkeys(['key1', 'key2', 'key3'], 'default_value')
    3 print(hero_redefined)                         # 输出:{'key1': 'default_value', 'key2': 'default_value', 'key3': 'default_value'}
    4 print(hero)                                   # 输出:{'na1': '庄周', 'na2': '明世隐', 'na3': '孙膑', 'na4': '鬼谷子'}

    setdefault("key", "default_value")  为字典中单个key 赋默认值, 参数为 单个键值对,default_value 值可省略

    1 # 若 key 在字典中存在,则不覆盖默认值;若key在字典中不存在,则创建key,并赋初始值
    2 hero.setdefault('na1', '鲁班大师'3 hero.setdefault('new_key', '蔡文姬'4 print(hero)                                  # 输出: {'na1': '庄周', 'na2': '明世隐', 'na3': '孙膑', 'na4': '鬼谷子', 'new_key': '蔡文姬'}

    update(dict)  将字典参数更新到目标字典中

    1 # update(dict)   参数:字典,将hero_temp字典 更新到 hero字典
    2 hero_temp = {'na1': '妲己''na_new': '安琪拉'}
    3 hero.update(hero_temp)
    4 print(hero)                                # 输出:{'na1': '妲己', 'na2': '明世隐', 'na3': '孙膑', 'na4': '鬼谷子', 'ne': '安琪拉'}

    字典中新增键值对

    1 hero['诗人'] = '李白'                       # 新增键值对
    2 print(hero)                               # 输出:{'na1': '庄周', 'na2': '明世隐', 'na3': '孙膑', 'na4': '鬼谷子', '诗人': '李白'}

    Python中 可变类型 与 不可变类型

     1 # 元组 字符串 是不可变类型
     2 tup = ('s1', 's2')
     3 tup = tup.__add__(('s3', 's4'))        # tup 元组 新增 元素,类似于  两个字符串拼接,赋值于另一个变量,元组的地址被改变
     4 print(tup)                             # 输出:('s1', 's2', 's3', 's4')
     5 
     6 tup[0] = 's0'                          # 运行报错,因为:元组不可被改变,通过索引 修改 元组元素的值,是不可以的
     7 
     8 str1 = 's3 sunday'
     9 print(id(str1))                        # 输出:2444818405680
    10 str1 = 'ss'                            # 修改字符串str1标签的指向地址
    11 print(id(str1))                        # a 指向的地址改变了, 输出:2444818412744
    1 # 列表 字典 是可变类型,可修改列表、字典的元素,地址id不会变
    2 ls = [1, 'ss', 3.5, [6, 'dd'], 4 < 5]
    3 print(id(ls))                           # 输出:2674034238152
    4 ls[1] = 5                               # 修改列表元素
    5 print(id(ls))                           # 输出:2674034238152
    6 print(ls)                               # 输出:[1, 5, 3.5, [6, 'dd'], True]

    字符串 和 列表的区别

    1 name = 'Lucy'
    2 name.replace('u', 'an')
    3 print(name)                            # 输出:Lucy
    4 re_name = name.replace('u', 'an')
    5 print(re_name)                         # 输出:Lancy
    1 str1 = "lucy"
    2 str1[1:3] = 'a'   # 报错 TypeError: 'str' object does not support item assignment

     类型判断 isinstance()

    1 # isinstance(object, type)  类型判断,输出结果:True, False
    2 int_num = 8
    3 print(isinstance(int_num, int))     # 判断int_num 类型是否为 int类型,输出:True
    4 print(isinstance(int_num, float))   # 输出:False

    all() 判断元组、列表、集合中,是否存在元素的值为假(即:'', None, 0),是则返回False,否则返回True

     1 # all(object)
     2 tuple_a = (1, 2, 'we', 'are')
     3 tuple_b = ()
     4 
     5 list_a = [1, 2, '', 'are']      # list_a = [1, 2, None, 'are']
     6 list_b = []
     7 
     8 set_a = {1, 0, 'we', 'are'}
     9 set_b = {}
    10 
    11 print("""
    12 tuple_a:{}
    13  list_a:{}
    14   set_a:{}
    15 """.format(all(tuple_a), all(list_a), all(set_a)))
    16 
    17 print("*"*10, """空元组、空列表、空集合,返回Ture
    18 tuple_b:{}
    19  list_b:{}
    20   set_b:{}
    21 """.format(all(tuple_b), all(list_b), all(set_b)))
    22 
    23 # 输出:
    24 tuple_a:True
    25  list_a:False
    26   set_a:False
    27 
    28 ********** 空元组、空列表、空集合,返回Ture
    29 tuple_b:True
    30  list_b:True
    31   set_b:True
    32 

    any() 判断元组、列表、集合中,是否所有的元素值都为假(即:'', None, 0),是则返回False, 否则返回True

     1 # any(object)
     2 tuple_a = (4, None, 'ss', 0, '')
     3 tuple_b = ()
     4 
     5 list_a = ['', 0, None]
     6 list_b = []
     7 
     8 set_a = {4, 'ss', None}
     9 set_b = {}
    10 print('''
    11 tuple_a : {}
    12 list_a  : {}
    13  set_a  : {}
    14  '''.format(any(tuple_a), any(list_a), any(set_a)))
    15 
    16 print('*'*10, '''空元组、空列表、空集合,返回False
    17 tuple_b : {}
    18 list_b  : {}
    19  set_b  : {}
    20  '''.format(any(tuple_b), any(list_b), any(set_b)))
    21 
    22 # 输出:
    23 tuple_a : True
    24 list_a  : False
    25  set_a  : True
    26  
    27 ********** 空元组、空列表、空集合,返回False
    28 tuple_b : False
    29 list_b  : False
    30  set_b  : False
    31 
  • 相关阅读:
    iptables防火墙(RHEL6)
    漏洞扫描与网络抓包
    服务安全与监控
    Typecho反序列化漏洞
    python类,魔术方法等学习&&部分ssti常见操作知识点复习加深
    PHAR伪协议&&[CISCN2019 华北赛区 Day1 Web1]Dropbox
    [GXYCTF2019]禁止套娃 1 &无参数RCE
    PHP代码审计学习(1)
    Yii2安装完kartik组件后,使用时报错
    收藏博客
  • 原文地址:https://www.cnblogs.com/qyyan/p/12859263.html
Copyright © 2011-2022 走看看