zoukankan      html  css  js  c++  java
  • 2.变量、数据类型、数据类型转换相关函数

     


    python变量的使用不需要进行类型声明(类型名 变量名),给一个变量名赋什么值就是什么类型。

    • 变量的赋值使用 =

    image

    说明:虽然python声明变量时没有一个类型来圈注,但它并不是弱类型语言,相反,它是一门强类型语言。

    • 弱类型的语言的东西没有明显的类型,它能随着环境的不同自动变换类型;
    • 而强类型则没这样的规定,不同类型间的操作有严格定义,只有相同类型的变量才能操作

    为什么说 Python 是强类型语言


    Python变量命名规则:

    • 变量名只能是 字母、数字或下划线的任意组合
    • 变量名的第一个字符不能是数字
    • 不能与关键字重名(关键字用着用着就记熟了)

    image


    数据类型

    整数int类型:

    python3中移除了python2中的long

    Python3中没有限制int数值的大小

    image

    • 可以用其他数制来表示数值:二进制是以0b开头的,8进制是以0O(第二个是英文o,大小写都可以)开头的,16进制是以0x开头的
    >>> i=0b1111
    >>> print(i)
    15
    >>> i=0x0010
    >>> print(i)
    16
    >>> i=0o0010
    >>> print(i)
    8
    >>> i=0O0010
    >>> print(i)
    8

     

    小数float类型:

    • 可以用小数表示:3.1415,1.5,.......
    • 也可以用科学计数法表示(10用e替代,比如0.000012可以写成  1.2e-5)
    >>> a=1.5
    >>> print(a)
    1.5
    >>> a=-9999.5
    >>> print(a)
    -9999.5
    >>> a=1.5e5
    >>> print(a)
    150000.0
    >>> a=1.5e-10
    >>> print(a)
    1.5e-10
    >>> a=0.0000000000000001
    >>> print(a)
    1e-16

    注:对于太小的数,会自动转化成科学计数法表示,太大的数不会自动转化

     

    布尔bool类型:True、False

    • 使用True和False两个关键字来表示布尔类型
    • 可以使用非零数值表示True,但总觉得这是一个不好的习惯
    >>> type(True)
    <class 'bool'>
    >>> type(False)
    <class 'bool'>
    >>> a=bool(2)
    >>> a
    True
    >>> a=int(True)
    >>> a
    1
    >>> print(int(False))
    0

     

     

    字符串str类型:

    • Python不支持字符类型; 字符会被视为长度为  1的字符串
    • 可以使用两个单引号,或两个双引号来代表字符串
    >>> type("aaaa")
    <class 'str'>
    >>> type('aaaa')
    <class 'str'>
    • 可以使用下标来访问字符串的值【-1代表最后一位】:
    >>> str1="123"
    >>> str1[0]
    '1'
    >>> str1[-1]
    '3'
    • 可以对字符串进行切片(切片方法:字符串名[左下标:右下标(不取到右下标)]),返回值是切片后的字符串,但并不会改变原字符串的值

    【    [:]代表完全切片,[:右下标]代表从零开始,[左下边:]代表结尾是最后一位,-1下标代表最后一位   】

    【切片也可以有间隔,用法字符串名[左下标:右下标:间隔]   】

    >>> hello="hello world!"
    >>> new_hello=hello[:]
    >>> new_hello
    'hello world!'
    >>> hello[:2]
    'he'
    >>> hello[1:3]
    'el'
    >>> hello[1:-1]
    'ello world'
    >>> hello[1:-1:1]
    'ello world'
    >>> hello[1:-1:2]
    'el ol'
    • 可以使用三引号(单引号或双引号)来代表多行字符串
    >>> type("""hahah
    haha
    hahah""")
    <class 'str'>
    >>> type('''第一行
    第二行
    第三行''')
    <class 'str'>

     

     

    列表list类型:

    • list是一种有序的集合,可以随时添加和删除其中的元素。
    • 使用中括号包裹元素,表明这是一个列表。[元素,元素,元素,.......]
    >>> i=['a',100,True]
    >>> type(i)
    <class 'list'>
    • 列表的元素不限定数据类型,可以是字符串,可以是数值,可以是布尔类型,也可以是其他列表等等
    • 列表可以是空的:list1=[]
    • 可以使用list函数来创建列表
    >>> list("abcd")
    ['a', 'b', 'c', 'd']
    • 列表也可以使用下标来访问元素,也可以切片,操作与字符串相同。
    • 列表可以替换元素【使用 = 】:
    >>> i
    ['a', 100, True]
    >>> i[0]='b'
    >>> i
    ['b', 100, True]
    • 如果列表中包含列表时,如果要取子列表中的元素,相当于操作“二维数组”,使用 列表名[索引][索引]:
    >>> i
    ['b', 100, True]
    >>> l=[i,"helloworld"]
    >>> l
    [['b', 100, True], 'helloworld']
    >>> l[0][0]
    'b'
    • 可以使用“+”拼接列表,使用*重复列表
    >>> l2=i*2
    >>> l2
    ['b', 100, True, 'b', 100, True]
    >>> l3=i+l
    >>> l3
    ['b', 100, True, ['b', 100, True], 'helloworld']

     

     

    元组tuple类型:

    • 使用()跟,来表示元组,当tuple中只有一个元素时,逗号可以特别的说明这是一个tuple,实际上,python也允许tuple定义时没有括号
    >>> t1=('a',1,True)
    >>> type(t1)
    <class 'tuple'>
    >>> t2=('a')
    >>> type(t2)
    <class 'str'>
    >>> ####注意上面的类型###
    >>> t3=('a',)
    >>> type(t3)
    <class 'tuple'>
    >>> tuple2=1,2,3,4,5
    >>> type(tuple2)
    <class 'tuple'>
    >>> tuple2
    (1, 2, 3, 4, 5)
    • 有序列表叫元组,tuple的元素一旦初始化就不能修改,但可以存储list,因为tuple并不会复制一份list到自己的内存中,它只会存储list的内存指向,只要list的内存指向不变,就不跟tuple的不变原则冲突。
    >>> t1=('a',i)
    >>> t1
    ('a', ['b', 100, True])
    >>> id(t1[1])
    1673650817160
    >>> id(i)
    1673650817160
    • tuple也可以可以使用下标来访问元素,也可以切片,操作与字符串相同。
    • 元组可以为空
    • 元组常用函数
    • tuple一旦初始化就不能修改,所以它没有append()、insert(),也没有pop()等能增删元素的方法

      >>> tuple1=(1,2,3,4)
      >>> print(tuple1.index(2))#查找指定元素的下标
      1
      >>> print(tuple1.count(2))#查找某元素存在的数量
      1

     

    字典dict类型:

    • 使用键-值(key-value)存储
    • 由于其哈希特性,因此具有极快的查找速度
    • 可以使用{键1:值1,键2:值2,键3:值3 ...}来定义一个字典
    >>> d1={'a':'apple','b':'banana','c':'cabbage'}
    >>> type(d1)
    <class 'dict'>
    • 字典是使用哈希算法来计算对应对应值的位置的,所以key必须是固定不可变的,在Python中,字符串、整数等都是不可变的,所以,可以作为key。其余元素可变的对象如list、set、dict就不能作为key,因为其元素结果不确定,无法确定哈希值。
    >>> l1=['a']
    >>> d1[l1]='c'
    Traceback (most recent call last):
      File "<pyshell#5>", line 1, in <module>
        d1[l1]='c'
    TypeError: unhashable type: 'list'
    • dict内部存放的顺序和key放入的顺序是没有关系的
    • 可以使用  字典名[键]     快速查找出对应的值,键不存在则无法查找
    >>> d1
    {'a': 'apple', 'b': 'banana', 'c': 'cabbage', ('a',): 'c'}
    >>> d1['a']
    'apple'
    >>> d1['d']
    Traceback (most recent call last):
      File "<pyshell#17>", line 1, in <module>
        d1['d']
    KeyError: 'd'
    • 可以给某一个键的对应的值重新赋值,但由于一个key只能对应一个value,所以新的赋值会把就得值覆盖掉【如果定义的时候出现多个同名的键,这个键的值以最后的赋值为准】
    >>> d1
    {'a': 'apple', 'b': 'banana', 'c': 'cabbage', ('a',): 'c'}
    >>> d1['a']='apple pen'
    >>> d1
    {'a': 'apple pen', 'b': 'banana', 'c': 'cabbage', ('a',): 'c'}
    • 可以使用   字典名[一个未使用的键]=值  来添加一个键值对:
    >>> d1
    {'a': 'apple pen', 'b': 'banana', 'c': 'cabbage', ('a',): 'c'}
    >>> d1['ai']='python'
    >>> d1
    {'a': 'apple pen', 'b': 'banana', 'c': 'cabbage', ('a',): 'c', 'ai': 'python'}
    • 注:直接迭代字典,只能迭代出key
    >>> dict10={1:"苹果","雪碧":"雪梨"}
    >>> 
    >>> for i in dict10:
        print(i)
    1
    雪碧

     

    • 使用 字典名[key] 获取不存在的键时会抛出异常KeyError,可以使用成员运算符来避免或使用get()来避免
    >>> dict10
    {1: '苹果', '雪碧': '雪梨'}
    >>> 1 in dict10
    True
    >>> 3 in dict10
    False
    >>> print(dict10.get(3))
    None
    >>> print(dict10.get(1))
    苹果

     

     

     

    集合类型:

    • set和dict类似,也是使用大括号包裹
    • 可以使用大括号来定义一个集合
    >>> s1={'a','b','c'}
    >>> s1
    {'b', 'c', 'a'}
    >>> type(s1)
    <class 'set'>
    • 可以使用set来定义一个集合,set函数的参数为一个可迭代对象(Iterable)
    >>> s2=set()
    >>> type(s2)
    <class 'set'>
    >>> s3=set(['a','b','c'])
    >>> type(s3)
    <class 'set'>

    image_5a71b783_2fb0

    image_5a71b783_40a0

    • set不能使用下标来取出元素
    • set的原理和dict一样,所以,同样不可以放入可变对象,因为它也是使用哈希来计算计算结果的,可以记作set与dict不同的是它只存储key,不存储value【set()函数传入一个字典作为参数时,只取key作为结果】
    >>> s3.add(['cbd'])
    Traceback (most recent call last):
      File "<pyshell#37>", line 1, in <module>
        s3.add(['cbd'])
    TypeError: unhashable type: 'list'
    • 集合的常用函数:补充

     


    数据类型转换相关函数:

    • int()函数可以把其他数据类型转换为整数:
    • float( )函数可以把其他数据类型转换成浮点数
    • str( )函数可以把其他数据类型转换成字符串类型
    • bool( )函数可以把其他数据类型转换成布尔类型
    • tuple()将其他数据类型转换为元组。
    • set()将其他数据类型转换为集合。

     

    >>> print(type(int("123")))
    <class 'int'>
    >>> print(type(float("123")))
    <class 'float'>
    >>> float("123")
    123.0
    >>> str(123)
    '123'
    >>> bool(2)
    True
    >>> list("123")
    ['1', '2', '3']
    >>> tuple("123")
    ('1', '2', '3')

    注:转换是有规则的,要符合规则才能转化,比如int()不能转换"abc"

    image


  • 相关阅读:
    Kibana之配置文件
    Elasticsearch之集群,本地搭建集群
    支付宝支付流程
    AJAX应用的五个步骤
    位运算
    微信小程序页面传值详解
    面向对象三大基本特性,五大基本原则
    rem样板
    js 数组 随机排序
    按位异或运算符
  • 原文地址:https://www.cnblogs.com/progor/p/8401900.html
Copyright © 2011-2022 走看看