zoukankan      html  css  js  c++  java
  • 基本数据类型及内置方法

    基本数据类型及内置方法

    一、数字类型int与float

    • int整形的定义

    age=10 #本质age = int(10)

    • 其他进制转十进制

      • 二进制:0,1 (如110)

        1 * (2** 2)+1 * (2** 1) + 0 * (2** 0) = 4+2+0 = 6

      • 八进制:0-7 (如123)

        1 * (8** 2) + 2 * (8** 1) + 3 * (8**0) = 64 + 16 + 3 = 83

      • 十六进制:0-9 a-f

        3 * (16 ** 2) + 2 * (16 ** 1) + 1 * (16** 0) = 768 + 32 + 1 = 801

    • 十进制转其他进制
    #十进制转二进制:
    # print(bin(108))  # 0b 1101100
    #十进制转八进制:
    # print(oct(83))   # 0o 123
    #十进制转十六进制:
    # print(hex(1000))  # 0x 3e8
    
    • float浮点型的定义

      height = 1.73 #本质height=float(1.73)

      字符串转整形需要先转成浮点型


    二、字符串str

    • 字符串的定义:单引号/双引号/三引号之间包含的字符就是字符串(三种方式没有任何区别,但是不可以混用)

    • 字符串前面加小写的r,代表转义(如果字符串中有特殊含义的字符,就可以定义为普通字符)

    #数据类型转换:str()可以将任意数据类型转换成字符串类型,如:
    l1 = [1,2,3,4,5]
    print(type(l1))
    print(type(str(l1)))
    <class 'list'>
    <class 'str'>
    

    1.索引取值:(正向取,反向取) 只能取值不能存

    s1 = 'hello world'

    >>> s1[4]	#表示正向取值,从左往右
    'o'
    >>> s1[-7]	#表示反向取值,从右往左
    'o'
    

    2.索引切片:截取字符串中的一小段字符串(顾头不顾尾)

    >>> s1[0:5]	#取出索引为0-4的所有字符
    'hello'
    >>> s1[5:]	#取出索引从5开始后面所有的字符
    ' world'
    >>> s1[::-1]	#从右往左依次取值
    'dlrow olleh'
    >>>
    

    3.长度len:获取字符串的长度,也就是字符的个数,空格也算字符

    >>> len(s1)
    11
    

    4.成员运算:in 和 not in

    >>> 'hello' in s1	#判断hello在不在s1中
    True
    >>> 'world' not in s1	#判断world是否不在s1中
    False
    

    5.strip:移除字符串首尾指定的字符,默认移除空格

    >>> s2 = '**hello**'
    >>> s2.strip('*')	#括号中指定移除的字符,如果不输入,默认移除空格
    'hello'
    

    lstrip移除左边的字符

    >>> s2 = '***hello***'
    >>> s2.lstrip('*')
    'hello***'
    

    rstrip 移除右边的字符

    >>> s2.rstrip('*')
    '***hello'
    

    6.split切分:对字符串进行切分,可以指定切分的分隔符,也可以指定切分次数,返回的是列表

    >>> s1.split()		#默认空格作为切分符号
    ['hello', 'world']
    >>> s2 = '192.168.1.111'
    >>> s2.split('.')	#指定以.作为切分符号
    ['192', '168', '1', '111']
    >>> s2.split('.',1)	#括号中的1代表切割的次数
    ['192', '168.1.111']
    

    rsplit:可以从右往左切割

    >>> s2.rsplit('.',1) #从右往左切分
    ['192.168.1', '111']
    

    7.循环:依次取出字符串中的每个字符

    s2 = '早上好'
    for i in s2:
        print(i)
    早
    上
    好    
    

    8.lower(),upper()

    >>> s3 = 'Hello World'
    >>> s3.lower()	#将字母都变小写
    'hello world'
    >>> s3.upper()	#将字母都变大写
    'HELLO WORLD'
    

    9.startswith和endswith

    >>> s1.startswith('h')	#判断字符串开头是否是以括号里的字符开头
    True
    >>> s1.endswith('d')	#判断字符串结尾是否是以括号里的字符结尾
    True
    >>> s1.startswith('d')
    False
    >>> s1.endswith('h')
    False
    

    10.格式化输出之forma

    按位置一一对应

    >>> name = 'yang'
    >>> age = 22
    >>> gender = 'male'
    >>> print('my name is {},my age is {} and my gender is {}' .format(name, age, gender))
    my name is yang,my age is 22 and my gender is male
    

    按索引

    >>> print('my name is {0},my age is {1} and my gender is {2}' .format(name, age, gender))
    my name is yang,my age is 22 and my gender is male
    >>> print('my name is {2},my age is {0} and my gender is {1}' .format(name, age, gender))
    my name is male,my age is yang and my gender is 22
    

    按指定参数传值

    >>> print('my name is {a},my age is {b} and my gender is {c}' .format(a=name, b=age, c=gender))
    my name is yang,my age is 22 and my gender is male
    >>> print('my name is {c},my age is {a} and my gender is {b}' .format(a=name, b=age, c=gender))
    my name is male,my age is yang and my gender is 22
    

    11.join:将列表中每个元素按照字符串中的分隔符进行拼接

    >>> L1 = ['yang','22','male']
    >>> '|'.join(L1)
    'yang|22|male'
    >>> '*'.join(L1)
    'yang*22*male'
    

    12.replace:将字符串中元素进行替换,(先旧后新)

    >>> l1 = 'my name is yang, my age is 18'
    >>> l1.replace('my', 'My')	#语法:.replace('旧','新')
    'My name is yang, My age is 18'
    >>> l1.replace('my', 'My',1)	#1 代表只把一个my改为 My
    'My name is yang, my age is 18'
    

    13.isdigit:判断字符串中的数据,是否是数字组成

    >>> l2 = '31415926'
    >>> l2.isdigit()
    True
    >>> l2 = '3.1415926'
    >>> l2.isdigit()
    False
    
    score = input('请输入您要查询的成绩:')
    if score.isdigit():
        score = int(score)
        if score >= 60:
            print('及格')
        else:
            print('不及格')
    else:
        print('请输入数字')
    

    三、列表list

    • 列表list的定义:在中括号[ ]内,用逗号分隔开的多个任意数据类型的值
    >>> list('hello')	#任意类型转换成list后,会把每个元素放到列表中
    ['h', 'e', 'l', 'l', 'o']
    >>> list((1,2,3))
    [1, 2, 3]
    

    1.索引取值:正反都可以取,不仅可以取还可以存

    >>> list1 = [1,2,3,4,5]
    >>> list1[0]	#正向取索引从0开始
    1
    >>> list1[-1]	#反向取表示从右往左
    5
    
    >>> list1[-1] = 6	#可以按照索引来修改制定位置的值
    >>> list1
    [1, 2, 3, 4, 6]
    

    2.索引切片:顾头不顾尾

    >>> list1[0:3]	#按照索引取出0到3的元素
    [1, 2, 3]
    >>> list1[0:5:2]	#2代表步长,一次走两个元素
    [1, 3, 6]
    

    3.添加append:列表尾部追加元素

    >>> list1.append(7)
    >>> list1
    [1, 2, 3, 4, 6, 7]
    

    4.extend:追加多个元素

    >>> list1.extend([8,9,10])
    >>> list1
    [1, 2, 3, 4, 6, 7, 8, 9, 10]
    

    5.insert:在指定位置插入元素

    >>> list1.insert(4,5) 
    >>> list1		#5就回来了
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    

    6.删除

    ​ del

    >>> del list1[-1]	#删除索引为-1的元素
    >>> list1
    [1, 2, 3, 4, 5, 6, 7, 8, 9]
    

    ​ pop():默认删除最后一个值,并且将删除的值返回,括号内也可以用索引来删除指定元素

    >>> list1.pop()	
    9				#将删除的元素返回
    >>> list1
    [1, 2, 3, 4, 5, 6, 7, 8]
    >>> list1.pop(-1)	#删除索引为-1的元素
    8
    

    ​ remove() :括号内表示要删除哪个元素,不需要用索引,没有返回值

    >>> list1.remove(5) #咱们的5又没有了
    >>> list1
    [1, 2, 3, 4, 6, 7]
    
    >>> shanchu = list1.remove(4)	#不会返回删除值
    >>> print(shanchu)
    None
    

    7.reverse():颠倒顺序

    >>> list1.reverse()
    >>> list1
    [7, 6, 3, 2, 1]
    

    8.sort():给列表内所有元素排序

    >>> list1
    [7, 6, 3, 2, 1]
    >>> list1.sort()
    >>> list1
    [1, 2, 3, 6, 7]		#默认从小到大的顺序
    
    >>> list1.sort(reverse=True)	#reverse指定是否颠倒顺序,默认为False
    >>> list1
    [7, 6, 3, 2, 1]
    

    9.count:统计当前列表内指定元素的个数

    >>> list.count(1)
    2
    

    10.index:获取当前指定元素的索引值,还可以指定查找范围

    >>> list.index(8)
    0
    >>> list.index(7)
    1
    

    四、元组tuple

    • 用途:存储多个不同类型的值(不能存可变类型)

    • 定义方式:用小括号存储数据,数据之间通过逗号分隔

      t1=('a','b') #t1=tuple(('a','b'))

      >>> t1 = (1,'hello',1.73,2,3)

    1.索引取值:按索引取值(正取,反取),只能取,不能存

    >>> t1[1]
    'hello'
    

    2.索引切片:(顾头不顾尾,步长)

    >>> t1[0:5:2]
    (1, 1.73, 3)
    

    3.成员运算

    >>> 'hello' in t1
    True
    >>> 'world' in t1
    False
    

    4.长度len

    >>> len(t1)
    5
    

    5.循环

    >>> for i in t1:
    ...     print(i)
    ...
    1
    hello
    1.73
    2
    3
    

    6.count

    >>> t1.count(1)
    1
    >>> t1.count('hello')
    1
    

    7.index

    >>> t1.index(2)
    3
    

    五、字典dict

    • 定义方式:通过大括号来存储数据,通过key:value来定义键值对数据,用逗号隔开
    >>> info={'name':'yang','age':'22','sex':'male'}
    >>> info
    {'name': 'yang', 'age': '22', 'sex': 'male'}
    
    • 类型转换
    #第一种:
    >>> info=dict([['name','yang'],('age','22')])
    >>> info
    {'name': 'yang', 'age': '22'}
    #第二种:使用fromkeys生成一个新的字典,它会以第一个参数作为key,以第二个参数为值
    >>> info.fromkeys(('name','age','sex'),None)
    {'name': None, 'age': None, 'sex': None}
    

    1.按照key存取值

    >>> info['name']	#使用key取值
    'yang'
    >>> info['age'] = '18'		#如果字典中有key修改值
    >>> info
    {'name': 'yang', 'age': '18'}
    >>> info['hobby'] = 'sleep'		#如果字典里没有key,新增key:value
    >>> info
    {'name': 'yang', 'age': '18', 'hobby': 'sleep'}
    

    2.长度

    >>> len(info)
    3
    

    3.成员运算

    >>> 'hobby' in info
    True
    >>> 'sex' in info
    False
    

    4.get:获取指定key的值,若不存在,默认返回None

    >>> info.get('age')		#key存在则取值
    '18'
    >>> res = info.get('a')	#key不存在返回None
    >>> print(res)
    None
    >>> res = info.get('a',666)	#第二个参数可以修改默认返回的值
    >>> print(res)
    666
    

    keys:

    >>> info.keys()		#返回所有key
    dict_keys(['name', 'age', 'hobby']
    

    values:

    >>> info.values()	#返回所有value
    dict_values(['yang', '18', 'sleep'])
    

    items:

    >>> info.items()	#返回所有键值对,返回值都是列表套元组,每个键值对都是存在元组
    dict_items([('name', 'yang'), ('age', '18'), ('hobby', 'sleep')])
    

    5.pop()删除:指定key进行删除,有返回值,返回的是value

    >>> info.pop('hobby')
    'sleep'
    >>> info
    {'name': 'yang', 'age': '18'}
    

    6.popitem():随机弹出一个键值对,有返回值,返回一个元组

    >>> info.popitem()
    ('age', '18')
    >>> info
    {'name': 'yang'}
    

    7.update:用新字典替换旧字典,有则修改,无则添加

    >>> info.update({'name':'chen'})	#有name则修改
    >>> info
    {'name': 'chen'}
    >>> info.update({'age':'18'})		#无age则添加
    >>> info
    {'name': 'chen', 'age': '18'}
    

    8.fromkeys

    >>> info.fromkeys(['name','age'],'oh')
    {'name': 'oh', 'age': 'oh'}
    #注意:不是同一个字典,而是生成新的一个字典,以第一个参数(列表)为key,第二个为value
    >>> info
    {'name': 'chen', 'age': '18'}
    >>> info2 = info.fromkeys(['name','age'],'oh')
    >>> info2
    {'name': 'oh', 'age': 'oh'}
    

    9.setdefault():key不存在则新增键值对,存在返回对应的value

    >>> info
    {'name': 'chen', 'age': '18'}
    >>> info.setdefault('hobby','buybuybuy')	#key不存在旧新增
    'buybuybuy'									#返回对应value
    >>> info
    {'name': 'chen', 'age': '18', 'hobby': 'buybuybuy'}
    
    >>> info.setdefault('age','22')		#存在则返回已存在key对应的值
    '18'
    >>> info							#对字典不做修改
    {'name': 'chen', 'age': '18', 'hobby': 'buybuybuy'}
    

    六、集合

    • 用途:集合、列表、元组、字典都可以存放多个值,集合也一样,但是集合主要用于去重、关系运算

    • 定义:用大括号存储,每个元素通过逗号隔开,定义空集合需用 set()来定义

      • 集合中每个元素必须是不可变类型
      • 集合中没有重复的元素(体现了去重功能)
      • 集合内元素无序
    • 关系运算

      1.合集(|):求两个人的所有好友(重复的直留一个)

    >>> friends1 = {'zero','sean','tank','egon'}
    >>> friends2 = {'jj','elax','sean','egon'}
    >>> friends1 | friends2
    {'egon', 'zero', 'jj', 'elax', 'sean', 'tank'}
    

    2.交集(&):求两个人的共同好友

    >>> friends1 & friends2
    {'sean', 'egon'}
    

    3.差集(-)

    >>> friends1 - friends2		#求1独有的好友
    {'zero', 'tank'}
    >>> friends2 - friends1		#求2独有的好友
    {'elax', 'jj'}
    

    4.对称差集(^):求两个人的独有好友(就是去掉重复的之后)

    >>> friends1 ^ friends2
    {'zero', 'jj', 'elax', 'tank'}
    

    5.值是否相等(==)

    >>> friends1 == friends2
    False
    

    6.父集:一个集合是否包含另外一个集合

    >>> {1,2,3} > {1,2}		#包含True
    True
    >>> {1,2,3} > {1,2,3,4}	#不包含False
    False
    

    7.子集

    >>> {1,2} < {1,2,3}
    True
    >>> {1,2,3,4} < {1,2,3}
    False
    
    • 去重
      • 只能针对不可变类型
      • 集合本身是无序的,去重之后无法保留原来的顺序
    >>> l1 = ['a','b','c',1,'a','b',2]
    >>> j1 = set(l1)
    >>> j1
    {1, 2, 'a', 'b', 'c'}
    

    针对不可变类型,并且保证顺序

    l = [
        {'name': 'lili', 'age': 18, 'sex': 'male'},
        {'name': 'jack', 'age': 73, 'sex': 'male'},
        {'name': 'tom', 'age': 20, 'sex': 'female'},
        {'name': 'lili', 'age': 18, 'sex': 'male'},
        {'name': 'lili', 'age': 18, 'sex': 'male'},
    ]
    
    new_1 = []
    for dic in l:
        if dic not in new_1:
            new_1.append(dic)
    print(new_1)
    #结果:去除了重复,保证了顺序
    [
     	{'name': 'lili', 'age': 18, 'sex': 'male'},
     	{'name': 'jack', 'age': 73, 'sex': 'male'},
     	{'name': 'tom', 'age': 20, 'sex': 'female'}
    ]
    

    七、数据类型总结

    • 按存值个数区分
      • 只能存一个值:可称为标量/原子类型(数字、字符串)
      • 可以存放多个值:可称为容器类型(列表、元组、字典)
    • 按照访问方式区分
      • 直接访问:只能通过变量名访问整个值(数字)
      • 顺序访问:可以用索引访问指定的值,索引代表顺序,成为序列类型(字符串、列表、元组)
      • key访问:可以通过key访问指定的值(字典)
    • 按可变不可变区分
      • 可变类型:列表、字典
      • 不可变类型:数字、字符串、元组
    • 可变类型:值发生改变时,内存地址不变,证明在改变原值
    • 不可变类型:值发生改变时,内存地址也变,证明没有改变原值,而是产生了新的值
  • 相关阅读:
    打造自己的性能测试类
    网站配置之最佳实践
    C#控制台窗口居中显示(转)
    将PDM文件导出成CHM帮助文件
    分享使用NPOI导出Excel树状结构的数据,如部门用户菜单权限
    Oracle 给已创建的表增加自增长列
    托管调试助手“NonComVisibleBaseClass”检测到问题
    翻页效果
    Excel表格转Json数据结构
    关于2D渲染的一些小想法
  • 原文地址:https://www.cnblogs.com/YGZICO/p/11807379.html
Copyright © 2011-2022 走看看