• 基本数据类型操作


    一、标准数据类型

    在Python3x中,有6个标准数据类型,分别为数字(Number)、字符串(String)、列表(List)、元组(Tuple)、字典(Dictionary)和集合(Set)

    不可变得数据类型:数字(Number)、字符串(String)、元组(Tuple)

    可变数据类型:列表(List)、字典(Dictionary)、集合(set)

    不可哈希的数据:列表(List)、字典(Dictionary)

    1. Python3x中支持int、 float、bool、complex(复数)

              可以通过type()和isinstance()来判断数据类型:

              (1)type()不会认为子类是一种父类类型

              (2)isinstance()会认为子类是一种父类类型

    >>> class A:
    	pass
    
    >>> class B(A):
    	pass
    
    >>> type(A()) == A
    True
    >>> isinstance(A(),A)
    True
    >>> type(B()) == A
    False
    >>> isinstance(B(),A)
    True
    >>> 
    
    • 整形(int)

           可以通过isdigit()来判断字符串是否由数字组成

    str = '99'
    if str.isdigit():
        print(int(str))
    • 字符串类型(string)

            可以通过isalpha()来方判断字符串是否只由字母组成

            可以通过isalnum()判断字符串是由数字和字母组成

    字符串需要掌握的操作
    1、strip lstrip rstrip  去两边的空格,去左边的空格,去右边的空格
    2、lower upper  全转为小写,全转为大写
    3、 startswith   endswith  字符串以什么开头  字符串以什么结尾
    4、split   将字符串按照分割符分成一个列表
    >>> name='C:/a/b/c/d.txt'
    >>> print(name.split('/',1))
    ['C:', 'a/b/c/d.txt']
    >>> 
    5、rsplit   从右边开始分割
    >>> name='a|b|c'
    >>> print(name.rsplit('|',1))
    ['a|b', 'c']
    >>> 
    6、join 
    >>> tag=' '
    >>> print(tag.join(['egon','say','hello','world']))   #可迭代对象必须都是字符串
    egon say hello world
    >>> 
    7、replace
    >>> name='alex say :i have one tesla,my name is alex'
    >>> print(name.replace('alex','SB',1))
    SB say :i have one tesla,my name is alex
    •  浮点型(float)

           可以通过float()将由纯数字组成的字符串转换为浮点型

    •  元组(tuple)

           元组可以看成是一个不可变的列表(可以当做字典的key),只读

          

    name = ('alex','egon','tank','surpass')
    
    需要掌握的知识点:
    1、按索引来取值(正向取,反向取)
    2、切片(【1:3)开区间),步长
    3、成员运算:in   not in

           元组练习题:

          

    实现打印商品详细信息,用户输入商品名和购买个数,则将商品名,价格,购买个数加入购物列表,如果输入为空或其他非法输入则要求用户重新输入
    
    msg_dic={
    'apple':10,
    'tesla':100000,
    'mac':3000,
    'lenovo':30000,
    'chicken':10,
    } 
    
    • 列表(List)

          

    user_info = ['alex','male',18]
    
    列表需要掌握的操作
    
    1、按照索引去存取值(正向取+反向取):即可以存也可以取
    2、切片操作(【1:3)),按步长
    3、成员运算:in     not in
    4、追加   list.append()
    5、删除   del list[index]
    6、循环 
    7、列表推导式    list = [i for i in range(1,10) if i%2 == 0] 
    注意:空列表不能按照索引添加值,而应使用append()
    •  字典(dictionary)

           字典是通过key-value来存取值, key是不可变数据类型,且是唯一的

         

    字典需要掌握的操作:
    1、按照key存取值,可取可存
    2、长度len
    3、成员运算 in     not in
    4、删除   del dict['name']
    5、keys(),values(),items()
    6、循环
    
    
    一个字典的实例:  
    user_dict = {'name':'alex','age':18,'sex':'male'}
    
    字典删除:
    1、del   del user_dict['name']
    2、pop  user_dict.pop('name')
    3、popitem  随机删除   user_dict.popitem()
    
    字典取值:
    1、user_dict['name']       alex
    2、user_dict.get('name')    推荐用get来取值,若键不存在不会抛异常,而会返回一个None
    
    clear():清除字典中的所有元素

           直接引用、浅拷贝、深拷贝三者的区别:

          这三者的区别:值传递、引用传递

       

    直接引用是引用(地址)传递,修改旧的或者新的都会影响另外一个,牵一发而动全身。
    
    使用列表的copy方法或者使用copy模块的copy()方法,仅仅开辟一块新的内存空间,将原列表的第一层元素复制一份新的,而列表内的嵌套不会复制,仅仅是引用了内层列表的地址,属于空有其表(因为内层的无论通过新列表还是旧列表都能修改)
    
    使用deepcoopy()方法拷贝列表,不仅开辟新空间,而且还将原列表的所有的元素都复制一份,无论原列表内是否存在嵌套的列表,属于形神具备(因为内层的列表元素不再是通过引用,而是真真正正的复制了一份新的)
    
    
    注意:对于数字和字符串,赋值、浅拷贝和深拷贝的值都指向同一个内存地址

          通过fromkeys创建新的字典

    Python 字典 fromkeys() 函数用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值
    dict.fromkeys(seq[, value])
    
    首先创建一个用来存字典键的列表
    
    lst = ['name','age','sex']
    dict_obj = dict.fromkeys(lst,[])
    
    >> dict_obj = {'name':[],'age':[],'sex':[]}
    
    dict_obj['name'].append('alex')
    
    >> dict_obj = {'name':['alex'],'age':['alex'],'sex':['alex']}
    
    print("dict_obj['name']:{}
    dict_obj['age']:{}
    dict_obj['sex']:{}".format(id(dict_obj['name']),id(dict_obj['age']),id(dict_obj['sex'])))
    # dict_obj['name']:1714986428808
    # dict_obj['age']:1714986428808
    # dict_obj['sex']:1714986428808

        python3字典的keys()方法会返回一个迭代器,可以用list()将其转换为列表

    >>> dict_1 = {'name':'egon','age':18,'sex':'male'}
    >>> dict_1.keys()
    dict_keys(['name', 'age', 'sex'])
    >>> list_1 = list(dict_1.keys())
    >>> print(list_1)
    ['name', 'age', 'sex']
    >>> 
    

       Python3字典的setdefault()方法和get()方法相似,如果键不存在字典中,会添加键并将值设为 default

    setdefault()方法语法:
    dict.setdefault(key, default=None)
    >>> dict_1 = {'name':'alex','age':18}
    >>> dict_1.setdefault('sex','male')
    'male'
    >>> print(dict_1)
    {'name': 'alex', 'age': 18, 'sex': 'male'}
    >>> 

        Python3中的update()方法把dict2的键值对更新到 dict中

    >>> dict = {'Name': 'Zara', 'Age': 7}
    >>> dict2 = {'Sex': 'female' }
    >>> dict.update(dict2)
    >>> print(dict)
    {'Name': 'Zara', 'Age': 7, 'Sex': 'female'}
    >>> 
    •  集合(set)
    集合(set)是一个无序的不重复元素序列。
    可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
    
    集合需要掌握的操作:
    
    1、长度len
    2、成员运算 in     not in
    3、差集 -
    4、合集 |
    5、交集&
    6、对称差集^
    
    
    >>> s = set('asdfghj')
    >>> t = set('asghjklb')
    >>> s-t                        #   求差集(只有a中拥有的而b集合没有的元素)
    {'d', 'f'}
    >>> s|t                        #   并集(既有集合a的元素,又有集合b的元素 )
    {'f', 'd', 'k', 'b', 'l', 'g', 'h', 'j', 's', 'a'}
    >>> s&t                        #   a和b的交集(集合a和b中都包含了的元素)
    {'g', 'h', 'j', 's', 'a'}
    >>> s^t                       #  对称差集(不同时包含于a和b的元素)
    {'f', 'd', 'k', 'b', 'l'}
    >>> 


    集合推导式

     集合推导式

    >>> s = {obj for obj in 'asccdfg' if obj not in 'acf'}
    >>> print(s)
    {'g', 's', 'd'}
    >>> 
  • 相关阅读:
    C#中AppDomain.CurrentDomain.BaseDirectory及各种路径获取方法
    Windows 2008 server R2安装.NET Framework4时提示“灾难性故障”
    Mysql explain执行计划
    解决Linux c语言运行时候“段错误 (核心已转储)”问题-采用gdb 解决
    udp-->socket通信原理
    udp通信的原理---makefile文件
    c语言知识点
    linux系统man命令用法和安装方法
    <linux系统c语言生成.so文件,生成64位可执行文件,在64位系统中运行32位的可执行文件>
    ubuntu系统无eth0网卡解决办法
  • 原文地址:https://www.cnblogs.com/surpass123/p/12373988.html
Copyright © 2020-2023  润新知