Python数据类型

一. 数字类型(eval()函数:int + float)


Python数字类型主要包括int(整型)、long(长整型)和float(浮点型),但是在Python3中就不再有long类型了。


int(整型)


在32位机器上,整数的位数是32位,取值范围是-231~231-1


long(长整型)


Python长整型没有指定位宽,但是由于机器内存有限,使用长的长整数数值也不可能无限大。


float(浮点型)


浮点型也就是带有小数点的数,其精度和机器有关。


complex(复数)


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


2. 字符串(str)


在Python中,加了引号的字符都被认为是字符串,其声明有三种方式,分别是:单引号、双引号和三引号;Python中的字符串有两种数据类型,分别是str类型和unicode类型,str类型采用的ASCII编码,无法表示中文,unicode类型采用unicode编码,能够表示任意字符,包括中文和其他语言。


3. 布尔型


和其他编程语言一样,Python布尔类型也是用于逻辑运算,有两个值:True(真)和False(假)。


布尔值可以使用and、or和not运算。
and运算是与运算,只有所有都为True,and运算结果才是True:
or运算是或运算,只要其中有一个为True,or运算结果就是True:
not运算是非运算,它是一个单目运算符,把True变成False,False变成True:


空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值


4. 列表(list)


列表是Python中使用最频繁的数据类型,集合中可以放任何数据类型,可对集合进行创建、查找、切片、增加、修改、删除、循环和排序操作。
用len()函数可以获得list元素的个数
用索引来访问list中每一个位置的元素,记得索引是从0开始的
当索引超出了范围时,Python会报一个IndexError错误,所以,要确保索引不要越界,记得最后一个元素的索引是len(classmates) [- 1]。
如果要取最后一个元素,除了计算索引位置外,还可以用-1做索引,直接获取最后一个元素
list是一个可变的有序表,所以,可以用append()往list中追加元素到末尾
也可以用insert(位置,”数据”)把元素插入到指定的位置,比如索引号为1的位置
classmates.insert(1, 'Jack')
要删除list末尾的元素,用pop()方法
要删除指定位置的元素,用pop(i)方法,其中i是索引位置
要把某个元素替换成别的元素,可以直接赋值给对应的索引位置


classmates[1] = 'Sarah'
list里面的元素的数据类型也可以不同
L = ['Apple', 123, True]
list元素也可以是另一个list
s = ['python', 'java', ['asp', 'php'], 'scheme']
(10)如果一个list中一个元素也没有,就是一个空的list,它的长度为0

元组(tuple )


(1)tuple 是使用 ( ) 小括号包含各个数据项
(2)tuple 与 list 的唯一区别是 tuple 的元素是不能修改,而 list 的元素可以修改
元组和列表一样,也是一种序列,与列表不同的是,元组是不可修改的,元组用”()”标识,内部元素用逗号隔开。
现在,classmates这个tuple不能变了,它也没有append(),insert()这样的方法。其他获取元素的方法和list是一样的,你可以正常地使用classmates[0],classmates[-1],但不能赋值成另外的元素。


不可变的tuple有什么意义?因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。


当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来
如果要定义一个空的tuple,可以写成t()
但是,要定义一个只有1个元素的tuple,如果你这么定义


S = (1)
Print(s)


定义的不是tuple,是1这个数!这是因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义。因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1。


所以,只有1个元素的tuple定义时必须加一个逗号,,来消除歧义
t = (1,)


(4)tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素。tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!
理解了“指向不变”后,要创建一个内容也不变的tuple怎么做?那就必须保证tuple的每一个元素本身也不能变。

元组,列表,字典的区别

字典(dict /items / keys /values)
(1)字典的每个元素是键值对,无序的对象集合
(2)字典是可变容器模型,且可存储任意类型对象
(3)字典可以通过键来引用,键必须是唯一的且键名必须是不可改变的(即键名必须为Number、String、元组三种类型的某一种),但值则不必
(4)字典是使用 { } 大括号包含键值对
(5)创建空字典使用 { }
字典是一种键值对的集合,是除列表以外Python之中最灵活的内置数据结构类型,列表是有序的对象集合,字典是无序的对象集合。

字典的遍历
a={'a':'1','b':'2','c':'3'}
1. 遍历key值
for key in a:
     pritn(key+':'+a[key])
for key in a.keys():
      print(key+':'+a[key])
2.遍历value值
for value in a.values():
    print(value)
3.遍历字典项
for kv in a.items():
    print(kv)
4.遍历字典键值
for key,value in a.items():
    print(key+':'+value)
for (key,value) in a.items():
print(key+':'+value)
(1)遍历字典的项
dic = {'a':2,'b':3}
for item in dic.items():
    print(item)
输出格式为元组
遍历字典的键
方法一:                                           方法二
dic = {‘a’:2,‘b’:3}                       dic = {'a':2,'b':3}
for i in dic.keys():                          for i in dic.keys():
    print(i)                                       print(i)
(3)遍历字典的值      (4)遍历字典的键值对
dic = {'a':2,'b':3}            dic = {'a':2,'b':3}
for i in dic.values():     for keys,values in dic.items():
print(i)                    print(“{}:{}”.format(keys,values))


集合(set)
(1)set 是一个无序不重复元素的序列
(2)使用大括号 { } 或者 set() 函数创建集合
(3)用 set() 创建一个空集合
(4)使用 set 可以去重


集合是一个无序的、不重复的数据组合,它的主要作用有两个,分别是去重和关系测试。
前三种为不可变数据(不可变数据类型在第一次声明赋值声明的时候, 会在内存中开辟一块空间, 用来存放这个变量被赋的值, 而这个变量实际上存储的, 并不是被赋予的这个值, 而是存放这个值所在空间的内存地址, 通过这个地址, 变量就可以在内存中取出数据了. 所谓不可变就是说, 我们不能改变这个数据在内存中的值, 所以当我们改变这个变量的赋值时, 只是在内存中重新开辟了一块空间, 将这一条新的数据存放在这一个新的内存地址里, 而原来的那个变量就不在引用原数据的内存地址而转为引用新数据的内存地址了,后三种为可变数据。
注意(区别C语言)


变量不需要声明,且变量赋值后变量才会真正被创建;
变量没有类型 
多个变量可以同时赋值
内置函数 type(), 用以查询变量的类型
1.变量为什么不需要声明类型?(与c语言等编程语言相对)


这个也与python中a代表地址有关,其它语言中把值赋给a的同时也限制了a的类型,其它语言中a代表的就是一个实实在在的量,而python中a代表的是指向这个量的地址,这个地址可以指向任何类型数据的存储空间,指向整型,a就是整型,指向字符串,a就是字符串,指向函数对象,a就是函数对象,这就是python中的隐式声明


另一种解释:Python的变量本质是个指针。当Python解释器执行number=1的时候,实际上先在内存中创建一个int对象,然后将number指向这个int对象的内存地址,也就是将number“贴”在int对象上


2.变量怎么回收?(变量被建立后的清除)
Python中的del是将这个对象的指向删除,当这个对象没有任何指向的时候,Python虚拟机才会删除这个对象。


3.内置函数 type() 与 isinstance() 区别
type(obj):用于判断一个未知对象的类型
isinstance(obj1,obj2):用于判断对象obj1是否是另一个类obj2的实例,简单说就是判断obj1是不是属于obj2类型,或者理解为obj1和obj2类型是不是一样。


type() 不会认为子类是一种父类类型,isinstance() 认为子类是一种父类类型。

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋柴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值