Python 经常使用基本数据类型

 本节导航:


 1、数据类型的查询

  当面对未知数据类型的数据时,咱们脑子里应该有这么一个问题:咱们怎样才能查到未知数据的数据类型呢?code

  这里就让我来简单的回答下你的困惑,在Python中咱们能够经过两种内置函数来查询对象数据类型:type()isinstance() ,在此我截取了这两个函数的部分源代码进行参考:htm

class type(object):
    """
    type(object_or_name, bases, dict)
    type(object) -> the object's type
    type(name, bases, dict) -> a new type
    """
...
type() 部分源代码
def isinstance(x, A_tuple): # real signature unknown; restored from __doc__
    """
    Return whether an object is an instance of a class or of a subclass thereof.
    
    A tuple, as in ``isinstance(x, (A, B, ...))``, may be given as the target to
    check against. This is equivalent to ``isinstance(x, A) or isinstance(x, B)
    or ...`` etc.
    """
    pass
...
isinstance() 部分源代码

  由注释咱们能够发现 type()isinstance() 的区别在于:isinstance() 中返回对象便是类的实例仍是是其子类的实例(即 isinstance() 会认为子类是一种父类类型)。

  虽然如今咱们看不懂它们的源代码到底在说些什么,不过咱们只须要知道它具体的用法便可,若是只是简单的肯定数据类型,本人倾向于使用 type() ,纯粹是自我感受 type() 简单方便点,只须要把声明好的变量名称输入在 type() 内便可,而 instance() 还必须在函数内进行数据类型的猜想判断正误才能获得想要的结果。在现阶段中简单判断数据类型使用 type() 足够了。

a = 123  
print(type(a))          #<class 'int'> print(isinstance(a, int))    #True
b = '123'              print(type(b))          #<class 'str'>

print(isinstance(b, int))    #False

c = True
print(type(c))           #<class 'bool'>
print(isinstance(c, bool))   #True

  解决好问题后,让咱们一块儿来了解下常见的Python数据类型吧。

print(type(123))                            #<class 'int'>
print(type(1.23))                           #<class 'float'>
print(type("你好!"))                        #<class 'str'>
print(type(True))                           #<class 'bool'>
print(type([1, 2, 3]))                      #<class 'list'>
print(type((1, 2, 3)))                      #<class 'tuple'>
print(type({"name": "Jane", "age": "18"}))  #<class 'dict'>
print(type(set([1, 2, 3])))                 #<class 'set'>
demo_type()

2、Number 数字

   Python中数字类型又包括:int(整型)、float(浮点型)和 complex(复数)

print(type(123))            #<class 'int'>
print(type(1.12))           #<class 'float'>
print(type(3j + 1))         #<class 'complex'>

int(整型)

  在32位机器上,整数的位数为32位,取值范围为 -2**31~2**31-1
  在64位系统上,整数的位数为64位,取值范围为 -2**63~2**63-1

  对于咱们来讲,这个范围已经挺大了,不用在乎范围太多。

  在Python 3 版本之后,若是整数发生溢出,Python会自动将整数数据转换为 long 长整数,不管多大都会显示数据类型为 int(整型),因此本人意见是就把长整型给忘了吧,浪费脑细胞记它干吗。

print(type(4**1000))        #<class 'int'>

float(浮点型)

  浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。通俗易懂点,咱们在这里就把它当作小数吧。之因此称为浮点数,是由于按照科学记数法表示时,一个浮点数的小数点位置是可变的。在表示很大或很小的浮点数时必须使用科学计算法表示,10e替代

  float 类型存放双精度的浮点数,计算后通常精确到小数点后16位,因为精度受限,进行相等性比较不可靠。(若是须要高精度,可以使用 decimal 模块的decimal.Decimal()  函数,这种类型能够准确的表示循环小数,可是处理速度较慢,适合于财政计算。) 

print(1.25*100)             #125.0
print(0.125*1000)           #125.0
print(12.5*10)              #125.0
print(type(12.5*10))        #<class 'float'>

print(1.25e9)               #1250000000.0
print(12.5e8)               #1250000000.0
print(1.25e-9)              #1.25e-09
print(0.00000000125)        #1.25e-09

print(1/3)                  #0.3333333333333333

注:只要涉及浮点数的运算,其结果必为浮点型。

complex复数)

  像咱们这样的屌丝复数什么的与咱们有什么关系,这辈子什么的是不会学复数了,仍是忘了吧。

数值运算

  Python中数值有7种简单运算:加(+)、减(-)、乘(*)、除(/)、取模(%)、幂(**)、取整除(//),在这里就列几个例子,具体的在运算符中在进行讲解。

a = 1
b = 3
print(a + b)            #4
print(a - b)            #-2
print(a * b)            #3
print(a / b)            #0.3333333333333333
print(a % b)            #1
print(a ** b)           #1
print(a // b)           #0
 
c = 3
d = 10
print(c % d)            #3
print(c ** d)           #59049
print(c // d)           #0

注:这里须要特别注意的是取模(%)运算,当分子小于分母时,结果为分子;当分子小于分母时,结果为余数(分子除以分母所得的数)。分子和分母、除数和被除数,是否是一脸懵逼,是否是发现本身好像...彷佛...把小学的数学忘了,那么恭喜你,在这里给你科普下:5/8 (八分之五),是分子,是分母。分母是除数,分子是被除数。

3、String 字符串

  在 Python 中,字符串是由引号(单引号 ' 或 双引号 " )与引号中的字符一块儿组合而成的,其中引号只是字符串外在声明的一种表达方式,不是字符串的一部分。

print('hello world!')     #hello world! print("hello world!")     #hello world!
a = "hello world!" 
print(a)             #hello world!

  这时候咱们内心该有疑虑了,既然书写字符串中单引号( ' )和双引号( " )均可以使用并且结果还相同,那么 Python 中为何还会提供两种呢?这样不会形成咱们选择上的困难吗?

  存在即合理,请相信这一点,像咱们这样的屌丝怎么能和人家大佬相比,他们脑子都不知道怎么长得,头确定都秃完了(聪明人的象征)。就拿咱们中文写做来举例吧,当写一大段文章中咱们常常会引用某人某人说什么什么话,这里的一段话能够看作是一段很长的字符串,当咱们引用别人所说的话时常常会用双引号引发来表示引用。同理可得,当字符串中须要使用到单引号或双引号时,这时候它两个同时存在的做用就体现出来了:

print('I'm a student.') #SyntaxError: invalid syntax

print("I'm a student.")         #I'm a student.

  固然这只是简单的状况,若是字符串内部既包含 ' 又包含 " 怎么办?这时候咱们就须要引入转义字符的概念了。这里容我卖个关子就不具体陈述了,有关内容在之后的字符串专题中进行详细的解读。

4、Boolean 布尔值

  Python中的布尔值用两个常量TrueFalse所表示,一个布尔值要么True,要么False(注:这里的首字母都为大写),经常使用在条件或循环中做为条件判断。TrueFalse分别对应数字中的10,可做为数字计算,但不提倡。

print(1 > 2)                #False
print(1 < 2)                #True
print(int(True))            #1
print(int(False))           #0
print(True + True)          #2
print(True == 1)            #True
print(False == 0)           #True

  布尔类型具体的“或”、“且”“非”运算在稍后的 Python 算符中进行详细的阐明。

5、List 列表

  列表(list)属于一种有序的集合,能够随时添加和删除其中的元素。列表是 Python 中内置的一种数据类型,也是最常用的 Python 数据类型。列表的命名规则就是一个方括号([]),建立一个列表只要把逗号分隔的不一样的数据项使用方括号括起来便可。列表中每一个元素都分配有一个数字(从0开始),这个数字即为该元素的位置(或索引)也能够认为是该元素的下标,第一个索引是0,第二个索引是1,反过来最后一个索引是-1,依此类推。

  在这里咱们就简单声明一个班级名单列表 name 进行演示:

name = ["Madonna", "Cory", "Annie", "Nelly"]

注:列表中的数据项能够为任意数据类型。

   如今咱们已经弄清楚列表元素的具体位置了,也顺便创建了一个简单的列表,在下一篇文章内容中咱们将会详细的了解到列表到底有哪些方法。

》》》》》》》》文章连接:Python 列表和元组

6、Tuple 元组

  元组和列表差很少,咱们能够把元组当作是简单的只读列表,与“强大”的列表不一样的是,元组建立后其中的元素就不能被修改了,它只有两个内置的方法:index() count() ,能够像列表那样进行“查”(即进行切片)和count() 统计,不支持复杂的“增”、“删”、“改”等功能。元组建立很简单,只须要在小括号中添加元素,并使用逗号隔开便可。具体的操做请查看上文列表,这里就不进行详细的说明,简单演示实例以下:

name = ["Madonna", "Cory", ["Annie", "Nelly"], "Cory"]        #建立一个班级名单列表 name
 name_1 = ("Madonna", "Cory", ["Annie", "Nelly"], "Cory")      #建立一个班级名单元组 name_1
print(name_1)               #('Madonna', 'Cory', ['Annie', 'Nelly'], 'Cory')

print(name_1[1:3])                  #('Cory', ['Annie', 'Nelly'])
print(name_1.index("Madonna"))      #0

print(len(name_1))                  #4

注:单个括号 ()  便可表示元组,又能够表示数学公式中的小括号,打印时会产生歧义,因此当定义单个单独的元素时,元素后必需要加一个逗号(,)隔开。

》》》》》》》》文章连接:Python 列表和元组

7、Dictionary 字典

  字典(dict)是在列表后咱们学到的第二种可变的容器模型,能够存储任意类型的对象。字典,顾名思义就像是咱们常用的新华字典或英语词典同样,具备极快的查找速度,能够帮助咱们快速的查找到所须要的东西。在Python中,字典是以键值对(‘key’-'value')的形式表现的,每一个键值对用冒号(:)分割,每一个对之间用逗号(,)分割,整个字典包括在花括号({}中。

  在这里须要注意的是:dict是无序的;跟多变的 value 不一样的是 key 具备惟一性;key 的数据类型必须是固定的不可变的,如:数字、字符串、元组等,而 value 就没有那么多的要求能够为任意的Python数据类型。演示实例以下:

math_score = {'Madonna': 89, 'Cory': 99, 'Annie': 65, 'Nelly': 89}         #建立一个班级数学成绩字典 math
print(math_score)           #{'Madonna': 89, 'Cory': 99, 'Annie': 65, 'Nelly': 89}
 demo_1 = {'Madonna': 89, 1: 'iennvv', 1.34: {'Madonna': 89}, ("ifne", "fjie"): [1, 2, 3]} print(demo_1)               #{'Madonna': 89, 1: 'iennvv', 1.34: {'Madonna': 89}, ('ifne', 'fjie'): [1, 2, 3]}
 demo_2 = {'Madonna': 89, {'iem': "ofem"}:99}        #TypeError: unhashable type: 'dict'
demp_3 = {[1, 2, 3]: 45}                            #TypeError: unhashable type: 'list'

  这时候咱们已经知道如何建立一个正确的字典了,虽然这个建立的这个字典的长度有点惨不容睹,可是它已经属于一个正常的字典了,能够实现索引字典该有的功能,在下一篇文章中咱们从“增”“删”“查”“改”四个方面进一步的接触它。

》》》》》》》》文章连接:Python 字典与集合

8、Sets 集合

   写到这里终于快结束了,容我先歇口气!在前面咱们一口气学完了列表、元组、字典,是否是感受本身快炸了,方括号、括号、大括号什么的两脸懵逼,不怂不怕,让暴风雨来的更猛烈些吧!!!接下来进入集合的学习吧:

  首先须要了解下如何去创建一个新的集合:第一种方法是咱们能够经过大括号 {} 内加内容用逗号( , ) 隔开的方式直接建立一个集合;第二种可使用 set() 方法将已有的列表(或元组)构建成一个无序的集合。

list_1 = [1, 3, 4, 5, 6, 66, 3, 6]          #建立一个列表 list_1
print(type(list_1))                         #<class 'list'>
 set_1 = set(list_1)                         #把列表 list_1 转换为集合 set_1
print(type(set_1))                          #<class 'set'>
print(set_1)                                #{1, 2, 3, 4, 5, 6, 66, 22}
print(set((1, 2, 3, 4, 4)))                 #{1, 2, 3, 4}    由元组建立集合
 set_2 = {1, 3, 3, 4, 4, 77}                 #直接建立一个集合 set_2
print(type(set_2))                          #<class 'set'>
print(set_2)                                #{1, 3, 4, 5, 77}

  啊!特么个人值怎么被吃了?怎么变短了那么多??系统还个人值啊!!!别激动,别激动,冷静下。

  冷静下来后仔细观察咱们就会发现,被“吃”的值是列表(或元组)中重复的东西,这时候咱们彷佛发现了集合中一个不可告人的大秘密,它好像具备“去重”的功能,是否是很熟悉?对,你猜对了。这点集合跟字典相似,具备“天生去重”(自动把集合内部重复的部分删除)的功能,咱们能够理解集合是一个无序的、不重复的数据组合,可是集合与字典也存在明显的不一样,咱们能够形象的把集合当作只有 key ,不具有存储 value 的功能。

    def __init__(self, seq=()): # known special case of set.__init__
        """
        set() -> new empty set object
        set(iterable) -> new set object
        
        Build an unordered collection of unique elements.
        # (copied from class doc)
        """
        pass
set() 部分源代码

注:集合和字典同样是无序的(没法经过数字进行索引),并且内部的数据类型必须是固定的不可变的。

》》》》》》》》文章连接:Python 字典与集合

 

注:这几篇文章本是一篇,因为字数太多严重影响阅读体验,因此就把内容进行了拆分,拆开的文章开始内容与本文相同,请见谅!!!

相关文章
相关标签/搜索