Python-数据类型

Life is short , I use Python


Python—数据类型

数据类型

1.Number(数字)
  • int 整型

  • long 长整型 ====> 165433L;

  • float 浮点型

    ​ 即带小数,例如52113.14;

  • complex 复数

    ​ 复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示,复数的实数部分a和虚数部分b是浮点型。

  • int型变量超过规定的值后会自动升为long型变量

  • 整形变量(int 和 long)与float型计算后得出的结果是float型
2.String(字符串)
  • 表示方法,如:str = “Hello World” 或 str = ‘Hello World’,在Python中,单引号和双引号都可以表示字符串;
  • 取值顺序,从右到左索引,默认0表示字符串中的第一个字符,从右到左索引,默认-1表示字符串中的最右边的第一个字符;
  • 截取字符串,str[头下标:尾下标],截取当前字符串中不包含头下标,包含尾下标的子字符串,例如:str[2:5],截取当前字符串从第三个字符开始到第五个字符的子字符串;
  • 用+连接字符串,如:str = “Hello” print(str + “World”) ====> HelloWorld;
  • 重复操作字符串,如:print(str 3) ====> strstrstr;
  • Python中的字符串不能被改变。
2.1字符串的修改
  • title() :字符串首字母设置为大写
  • upper() :字符串全部设置为大写
  • lower() :字符串全部设置为小写
  • rstrip() : 去除字符串末尾空白
  • lstrip() : 去除字符串开头的空白
  • strip() : 去除字符串开头和末尾的空白
  • 可使用\t添加制表符,\n添加换行
3.List(列表)
  • 列表用[]表示,如 list = [‘cat’,’dog’,’pig’,’bird’],每个单引号内的数据是列表的一个元素,元素若是字符串需要用单引号,若是数字类型则可不用;
  • 取值,可以一次取一个列表中的元素,也可以同时取出多个,列表元素的默认下标也是从0开始的,即list[0] ====> cat ,-1表示末尾第一个,列表切割方法同字符串;
  • +是列表连接运算,*是列表重复操作;
  • 列表内的元素是可以增删改查的。
列表的操作
  • len(list)

    ​ 求列表的长度,也就是列表里有多少元素

  • list.count()

    ​ 列表相同元素计数,如,count(‘a’),计算列表中元素和‘a’相同的有几个

  • max(list)

    ​ 返回列表元素最大值

  • min(list)

    ​ 返回列表元素最小值

  • list(seq)

    ​ 将元组转换为列表

  • list.append(obj)

    ​ 在列表末尾添加新的数据

  • list.extend(seq)

    在列表末尾一次性追加另一个序列中的多个值

    • extend 与 append
      • 相似之处,都是将新接收的参数添加到已有列表列表的后面
      • 不同之处,extend方法只能接受list,并且将list中的每个元素添加到原list中;而append方法可以接收任意数据类型的参数,并且简单的追加到list尾部。
  • list.index(obj)

    ​ 从列表中找出某个值第一个匹配项的索引位置

  • list.insert(index,obj)

    ​ 用于将指定对象插入列表的指定位置 index—索引位置 obj — 要插入列表的对象

  • list.pop([index = -1])

    ​ 移除列表中的一个元素(默认移除最后一个),并且返回该元素的值

  • list.remove(obj)

    ​ 用于移除列表中某个值的第一个匹配项

  • list.reverse()

    ​ 列表中的元素反向排序

  • list.sort(cmp = None,key = None,reverse = False)

    用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数。

    • Python内置的全局sorted()方法来对可迭代的序列排序生成新的序列,返回的是一个新的序列,旧的序列仍然保留,新的list的元素基于小于运算符(__It__)来排序。
    • list.sort()方法,排序后,list本身被修改,如果不需要能保留原来的list,这个方法更有效。
    • 从python2.4开始,list.sort()和sorted函数增加了key参数来指定一个函数,这个函数将在每个元素比较前被调用。
  • list.clear()

    ​ 清空列表

  • list.copy()

    ​ 复制列表

4.Tuple(元组)
  • 元组用()表示,元素之间用逗号隔开,元素可以是不同类型的数据;
  • 元组与字符串类似,也可以被索引和截取,可以将字符串看做一种特殊的元组;
  • 元组也可以使用 + 进行拼接,也可以使用*进行复制输出;
  • 元组中元素==不可变==,但是元素可以是可变的对象,如list列表;
  • 元组包含0个或一个元素,比较特殊,如 tup1 = () # 0个元素 , tup2 = (50,) #元组中只有一个元素的时候,需要在唯一的元素后面添加逗号,否则括号会被当做运算符使用;
  • 索引时,如 tup[1:5],从下表是1的元素开始,到下标为4的元素结束,这一点和字符串的索引相似。
5.Set(集合)
  • ==无序列不重复==

  • 可以使用{}或者set()函数创建集合,注意:创建空集合不能用{},因为{}是用来创建一个空字典的。 ​

    ​ 创建格式:s1 = {value1,value2,…} 或 s2 = set(value)

集合的基本操作
  • s.add() 添加元素

    s = {'apple','orange','apple','pear','orange'}
    a = set('abcdabscnd')
    print(s)
    print(a)
    
    输出结果
    {'apple', 'pear', 'orange'}
    {'c', 'a', 's', 'b', 'd', 'n'}   #不重复

    s.update(x) 也可以添加元素,而且参数可以是列表,元组,字典等,x可以有多个,用逗号分开。

  • 两个集合间的运算

    a = {'c', 'a', 's', 'b', 'd', 'n'}
    b = {'a','b','c','m'}
    print(a - b)    #只有集合a包含,而集合b没有的元素
    print(a & b)    #集合a和集合b中都包含了的元素 交集
    print(a | b)    #集合a或集合b包含的所有元素 并集
    print(a ^ b)    #不同时包含于集合a和集合b的元素
    
    输出结果
    {'s', 'd', 'n'}
    {'c', 'a', 'b'}
    {'m', 's', 'b', 'd', 'n', 'c', 'a'}
    {'m', 's', 'd', 'n'}
  • 移除元素

    • s.remove(x) 移除元素x,如果元素不存在,则发生错误
    • s.discard(x) 移除元素x,如果元素不存在,不会发生错误
    • s.pop() 随机删除集合里的一个元素
  • len(s) 计算集合的元素个数

  • s.clear() 清空集合

  • x in s 判断元素是否在集合中存在

6.Dictionary(字典)
  • 字典用{}标识;
  • 列表是有序的对象集合,字典是无序的对象集合。字典存储是以键值对的形式存储的,所以是通过键来进行数据的存取;
  • 在同一个字典中,键(key)必须是唯一的,并且键的类型是不可变的;
  • 访问字典里的数据时,是通过键来访问的,没有键的访问数据,会出现错误;
  • str(dict) 输出字典,以可以打印的字符串表示。
字典的内置函数
  • dict.fromkeys(seq,[value])

    ​ 创建一个新的字典,以序列seq中的元素作为字典的键,value为字典所有键对应的初始值,value 为可选参数,不设置的话默认为None。

  • dict.get(key,default=None)

    ​ 返回指定键的值,不存在的话返回默认值。

  • dict.items()

    ​ 以列表返回可变遍历的(键,值)元组数组。

    ​ 如:dict = {‘Name’ : ‘Frank’,‘Age’ : 18 } print(dict.items())

    ​ ====> dict_items([(‘Name’,‘Frank’),(‘Age’,18)])

  • dict.keys()

    ​ 返回一个迭代器,可以使用list转换为列表

    >>> dict = {'Name': 'Runoob', 'Age': 7}
    >>> dict.keys()
    dict_keys(['Name', 'Age'])
    >>> list(dict.keys())             # 转换为列表
    ['Name', 'Age']
    >>> 
  • dict.setdefault(key,default=None)

    ​ 如果key在字典中,返回key对应的值;如果不在,则插入key及设置的默认值default,并返回default,default默认值为None。与get()相比,就是setdefault()会将key及默认值添加到原dict中,而get()不会

    dict = {'Name' : 'Frank','Age' : 18 }
    print(dict.setdefault('Age'))
    print(dict.setdefault('Sex'))
    print(dict)
    
    输出结果
    18
    None
    {'Name': 'Frank', 'Age': 18, 'Sex': None}
  • dict.update(dict2)

    ​ 将字典参数dict2的key/value(键/值)对更新到字典dict里

    dict = {'Name' : 'Frank','Age' : 18 }
    dict2 = {'Sex' : 'Male'}
    dict.update(dict2)
    print(dict)
    
    输出结果
    {'Name': 'Frank', 'Age': 18, 'Sex': 'Male'}
  • dict.values()

    ​ 返回一个迭代器,可以使用list()来转换为列表,列表为字典中的所有值

    dict = {'Name' : 'Frank','Age' : 18,'Sex' : 'Male'}
    print(dict.values())
    print(list(dict.values()))
    
    输出结果
    dict_values(['Frank', 18, 'Male'])
    ['Frank', 18, 'Male']
  • dict.pop(key[,default])

    ​ 删除字典给定key所对应的值,返回值为被删除的值。key必须给出,否则返回默认值。

    dict = {'Name' : 'Frank','Age' : 18,'Sex' : 'Male'}
    print(dict.pop('Sex'))
    print(dict)
    print(dict.pop(5,'None'))
    
    输出结果
    Male
    {'Name': 'Frank', 'Age': 18}
    None

    ​ 如果想要删除的key不存在,需要设置默认值,否则会报错

    dict = {'Name' : 'Frank','Age' : 18,'Sex' : 'Male'}
    print(dict.pop('Sex'))
    print(dict)
    print(dict.pop(5))
    
    输出结果,报错
    Traceback (most recent call last):
    Male
      File "E:/WorkSpace/python/Practice/test1.py", line 4, in <module>
    {'Name': 'Frank', 'Age': 18}
        print(dict.pop(5))
    KeyError: 5
  • dict.popitem()

    ​ 随机返回并且删除字典中的一对键值对(一般删除末尾的)

    dict = {'Name' : 'Frank','Age' : 18,'Sex' : 'Male'}
    print(dict.popitem())
    print(dict)
    
    输出结果
    ('Sex', 'Male')
    {'Name': 'Frank', 'Age': 18}

可更改(mutable)对象与不可更改(immutable)对象

  • 不可变类型

    ​ 举个栗子,a = 5,是在内存空间内开辟了一块内存来存放5这个数值,假设为这块内存的地址为0x00001,然后将变量a指向这个内存的地址,这就是我们所说的将5赋值给a,此时a的内存地址为0x00001;然后,我们再将10赋值给a,这里其实就是已经新生成了一个int对象,在内存空间内又新开辟了一块内存存放10这个数值,假设这个存放10的内存空间为0x00002,当我们将10赋值给a的时候,a将指向10的地址,此时a的地址是0x00002,然后将5的地址给抛弃了。

    ​ Number , String , Tuple 都是不可变类型。

  • 可变类型​

    ​ 还是需要举个栗子,list = [‘cat’,‘dog’,‘bird’,‘pig’,‘monkey’],我们创建了一个list类型的对象,便是在内存里开辟了一块空间来存放list中的元素,假设这块空间的地址为0x00003,当我们执行list[3] = ‘fox’时,将会找到地址为0x00003的分配给list列表空间,将空间里的第4个元素‘pig’更改为‘fox’,list的地址没有变,变化的是list中的部分内容。

    ​ list,dictionary都是可变的数据类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值