zoukankan      html  css  js  c++  java
  • python(5)- 基础数据类型

    一 int 数字类型

    #abs(x)            返回数字的绝对值,如abs(-10) 返回 10
    # ceil(x)            返回数字的上入整数,如math.ceil(4.1) 返回 5
    # cmp(x, y)          如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1
    # exp(x)              返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045
    # fabs(x)             返回数字的绝对值,如math.fabs(-10) 返回10.0
    # floor(x)            返回数字的下舍整数,如math.floor(4.9)返回 4
    # log(x)              如math.log(math.e)返回1.0,math.log(100,10)返回2.0
    # log10(x)            返回以10为基数的x的对数,如math.log10(100)返回 2.0
    # max(x1, x2,...)     返回给定参数的最大值,参数可以为序列。
    # min(x1, x2,...)     返回给定参数的最小值,参数可以为序列。
    # modf(x)             返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。
    # pow(x, y)           x**y 运算后的值。
    # round(x [,n])       返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。python3中小数点一位为5,则返回离整数最近的偶数。
    # sqrt(x)             返回数字x的平方根,数字可以为负数,返回类型为实数,如math.sqrt(4)返回 2+0j        

    二 string 字符串类型

    字符串是以单引号'或双引号"括起来的任意文本,比如'abc'"123"等等。

    请注意,''""本身只是一种表示方式,不是字符串的一部分,因此,字符串'abc'只有abc这3个字符。

    如果'本身也是一个字符,那就可以用""括起来,比如"I'm OK"包含的字符是I'm,空格,OK这6个字符。

    a = 'hello world'
    b= "I'm Tom"

    python字符串内置方法

    # string.capitalize()                                  把字符串的第一个字符大写
    # string.center(width)                                 返回内容是原字符串居中,并使用空格填充至长度为 width 的新字符串
    # string.count(str, beg=0, end=len(string))            返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数
    # string.startswith(obj, beg=0,end=len(string))        检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查.
    # string.endswith(obj, beg=0, end=len(string))         检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.
    # string.join(seq)                                     以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
    # string.upper()                                       转换 string 中的小写字母为大写
    # string.lower()                                       转换 string 中所有大写字符为小写.
    # string.split(str="", num=string.count(str))          以 str 为分隔符切片 string,如果 num有指定值,则仅分隔 num 个子字符串
    # string.splitlines(num=string.count('
    '))            按照行分隔,返回一个包含各行作为元素的列表,如果 num 指定则仅切片 num 个行.
    # string.title()                                       返回"标题化"的 string,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())
    # string.translate(str, del="")                        根据 str 给出的表(包含 256 个字符)转换 string 的字符,要过滤掉的字符放到 del 参数中
    # string.replace(str1, str2,  num=string.count(str1))  把 string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num 次.
    #
    # string.swapcase()                                    翻转 string 中的大小写
    # string.decode(encoding='UTF-8', errors='strict')     以 encoding 指定的编码格式解码 string,如果出错默认报一个 ValueError 的 异 常 , 除 非 errors 指 定 的 是 'ignore' 或 者'replace'
    # string.encode(encoding='UTF-8', errors='strict')     以 encoding 指定的编码格式编码 string,如果出错默认报一个ValueError 的异常,除非 errors 指定的是'ignore'或者'replace'
    
    
    
    # string.ljust(width)                                  返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串
    # string.rjust(width)                                  返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串
    # string.strip([obj])                                  在 string 上执行 lstrip()和 rstrip()
    # string.lstrip()                                      截掉 string 左边的空格
    # string.rstrip()                                      删除 string 字符串末尾的空格.
    #
    # string.find(str, beg=0, end=len(string))             检测 str 是否包含在 string 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1
    # string.rfind(str, beg=0,end=len(string) )            类似于 find()函数,不过是从右边开始查找.
    # string.index(str, beg=0, end=len(string))            跟find()方法一样,只不过如果str不存在 string中会报一个异常.
    # string.rindex( str, beg=0,end=len(string))           类似于 index(),不过是从右边开始.
    # string.rpartition(str)                               类似于 partition()函数,不过是从右边开始查找.
    
    
    
    # string.isalnum()                                     如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False
    # string.isalpha()                                     如果 string 至少有一个字符并且所有字符都是字母则返回 True,否则返回 False
    # string.isdigit()                                     如果 string 只包含数字则返回 True 否则返回 False.
    # string.islower()                                     如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False
    # string.isnumeric()                                   如果 string 中只包含数字字符,则返回 True,否则返回 False
    # string.isspace()                                     如果 string 中只包含空格,则返回 True,否则返回 False.
    # string.istitle()                                     如果 string 是标题化的(见 title())则返回 True,否则返回 False
    # string.isupper()                                     如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False
    
    
    
    # string.maketrans(intab, outtab])                     maketrans() 方法用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
    # max(str)                                             返回字符串 str 中最大的字母。
    # min(str)                                             返回字符串 str 中最小的字母。
    # string.expandtabs(tabsize=8)                         把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8。
    # string.isdecimal()                                   如果 string 只包含十进制数字则返回 True 否则返回 False.
    # string.partition(str)                                有点像 find()和 split()的结合体,从 str 出现的第一个位置起,把 字 符 串 string 分 成 一 个 3 元 素 的 元 组 (string_pre_str,str,string_post_str),如果 string 中不包含str 则 string_pre_str == string.

    三、列表

    常用的方法

    append()
    index()
    sort()
    count()
    pop()
    copy()
    remove()
    clear()
    extend()
    reverse()
    insert()

    列表的索引和切片:

    li = ['a','b','c',1,2,3]
    print(li[0])
    print(li[2])
    print(li[-1])
    # a
    # c
    # 3
    #切片
    print(li[0:3])
    print(li[2:5])
    print(li[0:5:2])
    # ['a', 'b', 'c']
    # ['c', 1, 2]
    # ['a', 'c', 2]

    增:

    append(self, p_object) 添加 

    Demo = ['name','age','job']
    Demo.append('hobby')     #在列表后面新增元素 
    print(Demo)
    Demo.append([1,'hehe',True])
    print(Demo)                            #直接添加整个列表
    # ['name', 'age', 'job', 'hobby']
    # ['name', 'age', 'job', 'hobby', [1, 'hehe', True]]

    insert(self, index, p_object) 插入

    Demo = ['name','age','job']
    Demo.insert(1,'kitty')    #通过索引插入
    print(Demo)
    # ['name', 'kitty', 'age', 'job']
    
    insert()只能通过 索引 插入

    extend(self, iterable)  

    在列表后面 可迭代 的添加
    Demo = ['name','age','job']
    Demo.extend(' ')
    print(Demo)
    # ['name', 'age', 'job', ' ']
    Demo = ['name','age','job']
    Demo.extend('a')
    print(Demo)
    # ['name', 'age', 'job', 'a']
    Demo = ['name','age','job']
    Demo.extend('abc')          #可迭代的对象拆分遍历后添加
    print(Demo)
    # ['name', 'age', 'job', 'a', 'b', 'c']
    Demo = ['name','age','job']
    Demo.extend(['abc','b','c'])   #可迭代的对象拆分(子序列)遍历后添加
    print(Demo)
    # ['name', 'age', 'job', 'abc', 'b', 'c']

    删:

    pop(self, index=None) 

    Demo = ['name','age','job']
    t = Demo.pop(1)    #pop(索引)
    print(Demo)
    print(t)
    # ['name', 'job']
    # age

    remove(self, value)

    直接删除值
    Demo = ['name','age','job']
    Demo.remove('age')
    print(Demo)
    # ['name', 'job']

    clear(self)

    清空列表
    Demo = ['name','age','job']
    Demo.clear()
    print(Demo)
    # []

    del

    删除
    Demo = ['name','age','job','wall_e','eva',1,2,3]
    del Demo[2]     #索引删除
    print(Demo)
    # ['name', 'age', 'wall_e', 'eva', 1, 2, 3]
    Demo = ['name','age','job','wall_e','eva',1,2,3]
    del Demo[2:6:2]   #切片删除
    print(Demo)
    # ['name', 'age', 'wall_e', 1, 2, 3]
    Demo = ['name','age','job','wall_e','eva',1,2,3]
    del Demo               #把列表删了,列表不存在了,报错   not defined
    print(Demo)
    # Traceback (most recent call last):
    #   File "D:/Demo/test.py", line 11, in <module>
    #     print(Demo)
    # NameError: name 'Demo' is not defined

    改:

    通过索引改

    Demo = ['name','age','job','wall_e','eva',1,2,3]
    Demo[2] = 'hobby'
    print(Demo)
    # ['name', 'age', 'hobby', 'wall_e', 'eva', 1, 2, 3]

    通过切片改(迭代添加新的)

    Demo = ['name','age','job','wall_e','eva',1,2,3]
    Demo[2:5:] = 'abcde'
    print(Demo)
    # ['name', 'age', 'a', 'b', 'c', 'd', 'e', 1, 2, 3]

    查:

    通过索引查

    Demo = ['name','age','job','wall_e','eva',1,2,3]
    print(Demo[2])
    # job

    通过切片查

    print(Demo[5:0:-2])
    # [1, 'wall_e', 'age']

    for i in list: 用for循环把列表的每个元素列出来

    列表的嵌套:

    Demo = ['name','age',['job','wall_e','eva',1],2,3]
    Demo[1] = 'AGE'
    print(Demo)
    # ['name', 'AGE', ['job', 'wall_e', 'eva', 1], 2, 3]
    
    Demo = ['name','age',['job','wall_e','eva',1],2,3] Demo[1] = Demo[1].upper() print(Demo) # ['name', 'AGE', ['job', 'wall_e', 'eva', 1], 2, 3] #***必须把新生成的AGE 替换掉原来的, (通过索引改)
    Demo = ['name','age',['job','wall_e','eva',1],2,3] Demo[2][2] = Demo[2][2].upper() print(Demo) # ['name', 'age', ['job', 'wall_e', 'EVA', 1], 2, 3] #列表元素 首字母大写 Demo = ['name','age',['job','wall_e','eva',1],2,3] Demo[0].capitalize() print(Demo) print(Demo[0].capitalize()) # ['name', 'age', ['job', 'wall_e', 'eva', 1], 2, 3] # Name #不替换新的元素,原列表是不变的,即使列表是可变类型,因为字符串是不可变类型, #对字符串的操作不会改变原字符串 Demo[0] = Demo[0].capitalize() print(Demo) # ['Name', 'age', ['job', 'wall_e', 'eva', 1], 2, 3]

    计数count()

    Demo = ['name','age',['name','wall_e','name',1],2,'name']
    print(Demo.count('name'))
    # 2
    print(Demo.count('haha'))
    # 0

    排序
    sort(self, key=None, reverse=False) 正序
    sort(reverse=True) 倒序

    Demo = [1,2,3,7,6,0,4,5]
    Demo.sort()
    print(Demo)
    Demo = [1,2,3,7,6,0,4,5]
    Demo.sort(reverse=True)
    print(Demo)
    # [0, 1, 2, 3, 4, 5, 6, 7]
    # [7, 6, 5, 4, 3, 2, 1, 0]

    反转
    reverse(self)

    Demo = [1,2,3,7,6,0,4,5]
    Demo.reverse()
    print(Demo)
    # [5, 4, 0, 6, 7, 3, 2, 1]

    join 拼接列表元素(元素如果是字符串),返回字符串

    b = ['a','b','c']
    print('_'.join(b))
    print('mnmn'.join(b))
    # a_b_c
    # amnmnbmnmnc
    
    s = 'alex'                                字符串 通过**分开
    print('_'.join(s))
    # a_l_e_x

    示例:

      把任何一个嵌套列表的列表拆分打印出来

    li = [1,3,4,'alex',[['a','b',['y','n'],5],7,8,['q','w',3],'taibai',[1,2,3]],5,'ritian',['haha',666]]
    n = 0
    while n < len(li):
        if type(li[n]) == list:
            li[n:n+1] = li[n]    #切片  重新赋值 一个可迭代对象(列表)   ,zhongdianshi迭代添加
            n = n - 1
        else:n += 1
    for j in li:
        print(j)
        
    # 1
    # 3
    # 4
    # alex
    # a
    # b
    # y
    # n
    # 5
    # 7
    # 8
    # q
    # w
    # 3
    # taibai
    # 1
    # 2
    # 3
    # 5
    # ritian
    # haha
    # 666
    把任何一个嵌套列表的列表拆分打印出来

    四、字典

    字典是无序的

    字典关联性强

    字典元素为键值对 且 键 唯一 键 是 可哈西的(不可变数据类型:int str bool tuple)

    不可哈西(list dict set)

    字典是唯一一个映射的数据类型

    dic_1 = {'name':'Tom','age':20}

    dic_2 = {'class_1':['Tom','xiaoming','ligang'],'class_2':['张三','李四','王五']}

    键是唯一的

    dic = {'name':'Tom','name':'李刚','age':20}

    print(dic) #两个'name'

    增:

    dic[key] = value

      原字典已经存在key 覆盖

      如果没有,则添加

    dic = {'name':'Tom','son':'李刚','age':20}
    dic['job'] = 'teacher'
    print(dic)
    # {'name': 'Tom', 'son': '李刚', 'age': 20, 'job': 'teacher'}
    dic = {'name':'Tom','son':'李刚','age':20}
    dic['son'] = '张三'
    print(dic)
    # {'name': 'Tom', 'son': '张三', 'age': 20}

    setdefault(self, key, default = None)

    dic = {'name':'Tom','son':'李刚','age':20}
    dic.setdefault('hobby')                          #default没有的情况,默认为None
    # {'name': 'Tom', 'son': '李刚', 'age': 20, 'hobby': None}          #None  就是空   分配给一个特殊的所有的空的公共内存空间
    dic = {'name':'Tom','son':'李刚','age':20}
    dic.setdefault('hobby','girls')
    # {'name': 'Tom', 'son': '李刚', 'age': 20, 'hobby': 'girls'}
    dic = {'name':'Tom','son':'李刚','age':20}
    dic.setdefault('name','王五')                        #字典中已经有'name'  key ,就不对字典做任何修改
    # {'name': 'Tom', 'son': '李刚', 'age': 20}      #

    删:

    pop(self, key)   有返回值

    dic = {'name':'Tom','son':'李刚','age':20}
    print(dic.pop('name'))                    #通过键删除
    print(dic)
    # Tom
    # {'son': '李刚', 'age': 20}
    
    dic = {'name':'Tom','son':'李刚','age':20}
    print(dic.pop('city'))                             #如果键不存在,报错  KeyError:***
    print(dic)
    
    # Traceback (most recent call last):
    #   File "D:/Demo/test2.py", line 2, in <module>
    #     print(dic.pop('city'))
    # KeyError: 'city'
    
    dic = {'name':'Tom','son':'李刚','age':20}
    print(dic.pop('city',None))                #加上返回值None,且键不存在,说明key不存在, 当然也可以把None换成 '不存在'
    print(dic)  
    # None
    # {'name': 'Tom', 'son': '李刚', 'age': 20}

    popitem(self)  随机删

    dic = {'name':'Tom','son':'李刚','age':20}
    print(dic.popitem())
    print(dic)
    # ('age', 20)
    # {'name': 'Tom', 'son': '李刚'}

    clear(self)  清空

    dic = {'name':'Tom','son':'李刚','age':20}
    print(dic.clear())
    print(dic)
    # None
    # {}

    del  删除字典

    dic = {'name':'Tom','son':'李刚','age':20}
    del dic['name']
    print(dic)
    # {'son': '李刚', 'age': 20}
    
    del dic   #删除整个字典

    改:

    增功能中的覆盖

    dic = {'name':'Tom','son':'李刚','age':20}
    dic['name'] = '王五'
    print(dic)
    # {'name': '王五', 'son': '李刚', 'age': 20}

    update(self, E=None, **F)  更新

      覆盖并添加

    dic1 = {'name':'Tom','age':20}
    dic2 = {'name':'王五','pc':8888}
    dic1.update(dic2)
    print(dic1)                 #dic1变了   dic2没有变
    print(dic2)
    # {'name': '王五', 'age': 20, 'pc': 8888}
    # {'name': '王五', 'pc': 8888}

    查:

    dic[key]  如果键不存在,会报错

    dic = {'name':'Tom','age':20}
    print(dic['name'])
    print(dic['hehhehe'])
    # Tom
    
    # Traceback (most recent call last):
    #   File "D:/Demo/test2.py", line 3, in <module>
    #     print(dic['hehhehe'])
    # KeyError: 'hehhehe'

    get(self, k: _KT)

    dic = {'name':'Tom','age':20}
    print(dic.get('name'))
    # Tom
    
    dic = {'name':'Tom','age':20}
    print(dic.get('heheh'))
    # None
    
    dic = {'name':'Tom','age':20}
    print(dic.get('heheh','键不存在 -1'))
    # 键不存在 -1

    字典for循环:

    #1.  keys()
    dic = {'name':'Tom','age':20,'job':'teacher'}
    for key in dic:             # for key in dic.keys()
        print(key)              #    print(key)                 一样的效果
    # name
    # age
    # job
    #2.  values()
    dic = {'name':'Tom','age':20,'job':'teacher'}
    print(dic.values(),type(dic.values()))       #直接print
    # dict_values(['Tom', 20, 'teacher']) <class 'dict_values'>
    for value in dic.values():
        print(value)
    # Tom
    # 20
    # teacher
    #3.   items()
    
    dic = {'name':'Tom','age':20,'job':'teacher'}
    print(dic.items(),type(dic.items()))
    # dict_items([('name', 'Tom'), ('age', 20), ('job', 'teacher')]) <class 'dict_items'>
    for i in dic.items():
        print(i)
    # ('name', 'Tom')
    # ('age', 20)
    # ('job', 'teacher')
    #--------------------
    a,b = [1,2]
    print(a,b)                         #分别赋值
    # 1 2
    
    dic = {'name':'Tom','age':20,'job':'teacher'}
    for key, value in dic.items():    #key, value  分别接收数据
        print(key,value)
    # name Tom
    # age 20
    # job teacher
    print(type(key),type(value))       #得到的是字符串
    # <class 'str'> <class 'str'>

    五、元组

    只读,不可修改
    元组不可修改,但是元组如果包含列表,列表的内容可以更改

    a = (1,3,5)
    a[1] = 9       #报错,tuple 对象不支持更改
    print(a)    
    # Traceback (most recent call last):
    #   File "D:/Demo/test.py", line 2, in <module>
    #     a[1] = 9
    # TypeError: 'tuple' object does not support item assignment
    
    Demo = ('name','age',['wall_e','name',1],2)
    Demo[2][1] = 'job'
    print(Demo)
    # ('name', 'age', ['wall_e', 'job', 1], 2)

    六、集合

    集合是无序的,不重复的数据集合,它里面的元素是可哈希(不可变类型),

    但是集合本身是不可哈希,(所以集合做不了字典的键)

    集合最重要的2点:

      去重:把一个列表变成集合,就自动去重了。

      关系测试:测试两组数据之间的交集、并集、差集等关系

    创建:
    set = set({ })
    set = { }
    -------------------------------------
    增:
    add.()
    set = { }
    set.add(self, element)
    #set.add('kitty')
    
    update(self, iterable)    # 迭代添加
    set.update()  
    #set = {1,'d'}
    #set.update('龟叔')
    #print(set)
    #{1, '龟', 'd', '叔'}    
    
    删:
    pop(self)   # 随机删1个element
    remove(self, element)  # 指定删1个element
    clear(self)      #  清空set()
    del set       # 删集合本身    返回<class 'set'>

    集合交集、并集、差集、反交集、子集、超集:

    set1 = {1,2,3,4}                    
    set2 = {3,4,5,6}                    
    交集:set1 & set2      set1.intersection(set2)     # 3,4 
    反交集:set1 ^ set2      set1.symmetric_difference(set2)      # 1,2,5,6
    并集:set1 | set2       set1.union(set2)    # 1,2,3,4,5,6  
    差集 :                                 
            set1 - set2 是 1,2         set1 - set2       set1.difference(set2)
            set2 - set1 是 3,4         ***----***       ****------------****
    
    set1 = {1,2,3}
    set2 = {1,2,3,4,5,6}
    子集:
                set1 < set2        set1.issubset(set2)         返回True or False 
    超集:
                set2 > set1        set2.issuperset(set1)      返回True or False
                
    
    不可变集合:(把集合变成可哈西的)
        set = frozenset(iteralbe)    迭代创建set()
            set = frozenset('abc')
            print(type(set))
            #frozenset({'b', 'c', 'a'})
            #<class 'frozenset'>
  • 相关阅读:
    六.php小项目(2)过桥问题
    六.php小项目(1)九九乘法表
    五.php语言结构(3)break continue
    五.php语言结构(2)循环结构
    五.php语言结构(1)顺序和控制结构
    四.php运算符(6)字符串运算符和赋值运算符
    四.php运算符(5)递增递减运算符
    Day13 Java基础学习笔记
    Day12Java基础学习笔记
    Day 11Java基础学习笔记
  • 原文地址:https://www.cnblogs.com/zhzhlong/p/8480581.html
Copyright © 2011-2022 走看看