侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

Python变量、数据类型、数据类型转换相关函数用法实例详解

Python  /  管理员 发布于 7年前   200

本文实例讲述了Python变量、数据类型、数据类型转换相关函数用法。分享给大家供大家参考,具体如下:

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

  • 变量的赋值使用 =

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

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

为什么说 Python 是强类型语言


Python变量命名规则:

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


数据类型

整数int类型:

python3中移除了python2中的long

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

  • 可以用其他数制来表示数值:二进制是以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)>>> aTrue>>> a=int(True)>>> a1>>> 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("""hahahhahahahah""")<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 dict10True>>> 3 in dict10False>>> 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'>

  • 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"

关于Python相关内容感兴趣的读者可查看本站专题:《Python函数使用技巧总结》、《Python面向对象程序设计入门与进阶教程》、《Python数据结构与算法教程》、《Python字符串操作技巧汇总》、《Python编码操作技巧总结》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。


  • 上一条:
    Python 解码Base64 得到码流格式文本实例
    下一条:
    Python+OpenCV实现旋转文本校正方式
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客