• 数据类型


    四、数据类型

    数据类型,就是变量的类型,用于表示不同特征的变量,不同类型的数据类型。

    不可变类型:int,float,str,bool
    可变类型:list,dict

    1)整型

    进制转换:

    十进制转其它进制

    bin(11)
    0b1011
    oct(11)
    0o13
    hex(11)
    0xb
    

    转十进制

    int('0b1011',2)
    int('0o13',8)
    int('0xb',16)
    

    长整形
    在python2中(python3中没有长整形的概念):      
    >>> num=2L
    >>> type(num)
    <type 'long'>

    复数(了解)  
    >>> x=1-2j
    >>> x.real
    1.0
    >>> x.imag
    -2.0

    2)浮点型

    3)字符串

    单行:‘字符串’、“字符串”

    三引号(用于print中,或者是一个变量值)可以定义多行内容:
    ‘’‘多行字符串‘’’
    “””多行字符串“””
    引号嵌套邻近配对,注意不能混用,比如:'字符串"

    字符串方法:

    list1[0:3:1]  # 切片,取出list中的索引 0 到 2 的元素,1 为步长  
    str1.split()  # 以指定字符分割,默认是空格
    str1.split(':',1)  # 用 ’:’ 分割,只分割一次
    str1.strip(‘ *:’)  # 去除指定的所有字符,两边的
    lstrip,rstrip  # 去除空白,从左边,右边
    lower,,upper  # 字符串转换成全小写,全大写
    startswith,endswith  # 判断字符串以什么开头,结尾
    format  # 字符串格式化
    split,rsplit  # 分割字符串以指定符号,从左边,从右边开始分割
    join  # 将字符串插入指定字符
    ':'.join(str1)
    Replace  #将指定字符替换为其它字符
    str1.replace('a','A',1) 替换
    str1.isdigit() 纯数字字符串,且是整型
    

    了解:

    str1.find.('e')  返回'e'的索引,返回-1,找不到
    str1.index('e')  返回索引,报错,找不到
    str1.count('e')  返回数量
    str1.center(10,'*')
    ljust,rjust  一共10位不够用符号填充,str1在中左右
    str1.zfill(10)  10位,用0填充
    str1.expandtabs(2)  设置制表符为 2 位
    captalize  字符串首字母大写
    swapcase  大小写反转
    title  每个单词首字母大写
    isupper,islower  判断是否全大写,全小写
    istitle  是否每个单词首字母大写
    isalnum  是否由字母和数字组成
    isalpha  纯字母
    isspace  纯空格组成
    isidentifier  定义的名称是否合法
    

    处理输入的一顿操作:

    1)strip()
    2)Isdigit()
    3)Int()

    关于判断字符串是否是数字:

    b'1'  bytes  python2中字符串类型的格式,
    u'1'  Unicode 也就是python3中的普通字符串格式
    '一'  中文数字
    'Ⅰ'  罗马数字
    
    前提是,纯数字字符串
    
    isdigit     只能判断阿拉伯数字(bytes 和 unicode 都可以)
    isnumeric  bytes没有这个方法,可以识别阿拉伯数字(unicode)、汉字数字、罗马数字
    isdecimal  只可以识别阿拉伯数字(unicode)
    

    4)列表

    list 列表:a = [1,2,"3"]
    a[0] = 1
    a[1] = 2
    从 0 开始,索引取值
    反向取值,最后一个元素索引为 -1,倒数第二个 -2
    a[-1] = "3"

    强制转换,能够被for循环遍历的类型:字符串、列表、字典、元组、集合
    list('str1')
    底部就是遍历这个类型,添加到列表中

    一个列表元素添加到另外一个列表中
    [] + []
    a.extend(b) # b 也是一个可迭代对象

    列表方法:

    追加,append
    list1.append('*')
    
    插入,insert
    list1.insert(1,'*')
    
    删除
    del  # 通用,没有返回值
    l.pop()  # 删除最后一个值,有返回值
    l.pop(0)  # 删除0索引的值,返回被删除的值
    l.remove('egon')  # 删除具体的元素,返回值为None
    # 如果删除的元素,不存在列表或者索引越界了,就报错了
    
    切片
    和字符串一样有切片方法,完全切片为浅拷贝
    
    l.count('a')  # 统计'a'个数
    index_a = l.index('1')  # 查找元素索引
    l.clear()  # 清空列表
    l.reverse()  # 将列表反转,不是排序
    l.sort()  # 排序
    l.sort(key,reverse = False)  # 默认是升序,从小到大
    l.sort(reverse = True)  # 降序,从大到小
    
    字符之间比大小,比如,'abc' 跟 'z' 比较,先比较第一个字母,大小,即决定了结果,如果第一个相同,就比较第二个,最后,先迭代了全部元素的小,大小根据ASCII码表。
    

    队列,FIFO
    先进先出
    堆栈,LIFO
    后进先出

    5)字典

    字典的key是不可变类型,value是可变类型,key通常是字符串,描述功能
    a = {'name':'wl','age':24,}

    {key : value}
    key 键;value 值;
    key 对应 value
    取值:a['name'] = 'wl'

    按key取值
    dict1['key'] = 'no'
    有则索引,没有则创建

    定义一个字典:
    dictionary = {}
    定义字典:
    dictionary = dict(x = 1,y = 2,z =3)
    强制转换(定义字典):
    list1 = [[1,2],(1,2)]  # 迭代取出的值必须是两个
    dict(list1)
    初始化字典:
    keys = ['name','age','gender']  # 初始化字典
    {}.fromkeys(keys,None)
    
    删除
    del
    d.pop()
    d.popitem()  # 随机删除,返回键值对元组
    
    d.clear()  # 清空字典
    d.updata(dict1)  # 更新列表,将dict1中的元素,更新到d中,如果key重复的就更新替换
    d.get('k1','不存在')  # 返回None,或者指定参数
    d.setdefault('k1',222)  # k1存在就不改,不存在的话创建,返回key对应的值
    ... 等同于 pass
    
    dict1.get(key),不存在 返回None
    dict1.get(key,"自定义的默认值”)
    
    Python2
    dict1.keys() key 的列表
    dict1.values() value 的列表
    python3 迭代器?
    老母鸡与鸡蛋   
    
    for k in dict1.keys():
      print(k)
    for k in dict1:
      print(k)
    for in dict1.values():
      print(k)
    dict1.items() 键值对
    for k,i in dict1.items():
      print(k,i)
    k,i = ('age',1) 组成的数组(python2)
    python3还是母鸡
    

    6)布尔类型

    只有两个值:True 和 False,表示真或假。

    显式布尔值, 1 > 0 ,True,False
    隐式布尔值, 非零即正

    7)元组

    不可变的列表
    不可变是指,元组内存储的每个索引的内存地址,不可变。
    存储性
    定义元组:
    a = ()
    a = tuple()

    8)集合

    定义:
    set1 = set()
    集合:无序,元素不重复,元素为不可变类型

    1、去重

    只能针对不可变类型
    不能保证顺序
    

    2、关系运算

    与:a & b
    或:a | b
    差集:a - b
    对称差集:a ^ b
    包含关系:a < b
    

    3、删除元素

    s.discard(0)  # 具体的元素是啥,不存在do nothing
    s.remove(1)  # 具体的元素是啥,不存在,报错
    s.update({1,})  # 更新
    s.pop()
    s.add(5)  # 添加元素
    

    集合(博客):https://www.cnblogs.com/liuxu2019/p/11173986.html

  • 相关阅读:
    shiro
    leetcode696 C++ 36ms 计算二进制子串
    leetcode557 C++ 56ms 反转字符串中的每个单词
    leetcode657 C++ 16ms 判断回环
    leetcode709 C++ 4ms 转换成小写字母
    leetcode141 C++ 8ms 环形链表
    leetcode160 C++ 32ms 相交链表
    leetcode234 C++ 28ms 回文链表
    leetcode203 C++ 28ms 删除链表中满足条件的节点
    leetcode83 C++ 12ms 删除有序链表中的重复元素
  • 原文地址:https://www.cnblogs.com/pythonwl/p/12411437.html
Copyright © 2020-2023  润新知