老王python之python基本数据类型

老王python之python基本数据类型

  • python一切皆为对象(包含了一系列的数据和操作这些数据的方法,就叫做对象)

1、数据类型的组成

数据类型组成查看
身份(唯一标识符)id
类型type
数据项

2、常用的基本数据类型

 2.1 int整型
 2.2 bool型
  • bool型为True或者False 首字母必须大写,否则类型不会识别
>>> a = true
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'true' is not defined
>>> a = True
>>> type(a)
<type 'bool'>
 2.3 string字符串
  • 用双引号或单引号框起来的序列
  • 字符串”,”“,”“” “”“的区别
    • ”和”“直接表示一个字符串的变量是没有任何区别的
    • 如果字符串里面用到了单引号,就可以直接用双引号表示字符串,单引号不需要转义可以直接使用,反之也一样,转义的作用在后面会提到。
    • “”” “”“表示里面可以写多行字符或者注释,这里面可以任意使用单引号和双引号,它们都会被认为是字符串
 2.4 list列表
  • a = [1,2,3]
 2.5 tuple元组
  • a = (1,2,3)
 2.6 dict字典

3、数据类型的可变和不可变

  • 不可变类型:int、string、tuple
    这里写图片描述
  • 可变类型:list、dict
    这里写图片描述

变量赋值一切皆为引用

4、字符串的认知与应用

4.1 编码

英文字母,数字,标点,空白符,制表符,空白符及其他语言,甚至emoji等全部都是字符。
在计算机中,字符都是用数字来表示的,字符和数字之间的映射关系成为编码。
- 目前最著名的编码就是ASCII编码(美国信息交换标准代码),一共有95个可见字符+33不可见控制字符
- python中使用了两个内置函数来进行字符和编码之间的转换
“`

ord(‘A’) #转换为编码
65
chr(65) #转换为字符
‘A’
“`
- 因为ASCII码包含的字符比较少,所以像中文等并不能进行编码,在早期的其他的编码都是对ASCII码的扩充,但它们之间并不能互相兼容,所以由于编码和解码使用的编码表不一致,导致文章的内容混乱,就出现了乱码

  • **
  • 所以现在就出现了统一的编码Unicode编码,它兼容ASCII编码以及Emoji等全球大部分的文字系统。也是python3默认编码
  • ord()和chr()也可以用于Unicode中字符和编码的转换

字符串的比较就是对字符的比较,而字符的比较就是它们编码的比较。

#比如A的编码是65,B的编码是66
>>> 'A' < 'B'
True

字符串的比较就是从前往后逐一比较,直到分出大小,或有一方没有字符了为止

>>> 'abcde' < 'abdce'
True
>>> 'abcde' < 'abcd'
False

5、字符串常用用法

5.1 len()需注意

返回字符串的长度
这里写图片描述
可以看出中文长度并不是想象中的长度,一个中文汉字长度为3(这里代表3个字节串,由于python2默认的编码是ASCII码),要想转变为中文的长度,就需要转换成unicode码,但python3并不需要这样

转换成unicode码的方法
这里写图片描述

5.2 转义符:让字符更好处理

转义就是不要让程序混淆你的特殊符号
在要转义的字符前面加个反斜杠即可

>>> a = 'I'm a girl'    ##不转义的话就会报错
  File "<stdin>", line 1
    a = 'I'm a girl'
           ^
SyntaxError: invalid syntax
>>> a = 'I\'m a girl'
>>> a
"I'm a girl"

如果不想转义的话,比如,想要输出’\n’,但python输出的话会默认输出换行,这是在它前面加一个小尾巴r即可

>>> print "\n"


>>> print r"\n"
\n

5.3 访问子字符串

字符串是有序排列的,它的下标从左到右是从0开始排列的,最后一个下标是len()-1,从右往左的话,第一个(正数最后一个)是-1
- 可以用冒号来进行切片,格式为string[startindex:endindex],其中startindex必须比endindex小,startindex默认为0,endindex默认为最后一个,输出的值为左闭右开区间

>>> a = "abcde"
>>> a[:]
'abcde'
>>> a[1:]
'bcde'
>>> a[1:4]
'bcd'
>>> a[:4]
'abcd'
>>> a[:-1]
'abcd'

5.4 替换字符串

格式为s.replace(old, new[, count]),[]里面的内容表示可有可无

>>> a = "abc"
>>> a.replace('a','ccccc')
'cccccbc'
>>> a     ##由于字符串是不能修改的,所以本身并没有修改
'abc'

>>> a = "abcdeab"
>>> a.replace('a','tttt') ##全部都替换
'ttttbcdettttb'
>>> a.replace('a','tttt',1) ##指定替换几个
'ttttbcdeab'
>>> a.replace('a','tttt',-1)
'ttttbcdettttb'
>>> a.replace('a','tttt',2)
'ttttbcdttttba'

5.5 字符串拼接

  • 用加法拼接(不建议使用),格式为string = string1 + string2 ...,因为字符串本身并不能修改,如果是两个字符串相加那么相加的过程中又创建了一个对象,三个字符串相加的话又创建了两个临时对象,这种临时对象的创建、销毁是非常浪费性能的,假设有更多的字符串,相加的话内存的消耗,性能的损耗会越来越多,所以直接相加这种方法是最不推荐使用的拼接方法。


  • 字符串模版(可选方案)

    单个替换
    print 'my name is %s Hanmeimei' % "Lilei\'s",就会发现最后%后面的字符放到了%s的位置
    print 'my name is %s Hanmeimei' % 1,想要替换的内容为整型,它会自动转换为字符型,但反过来就不可以了,字符型并不能自己转换为整型
    %s代表占位符,%s代表字符串的占位符,%d代表数字的占位符
    多个替换
    print 'my name is %s Hanmeimei , %s' % ("lilei's","She's ten years old"),他们会按照前后顺序来进行替换的

但这种方法的拼接,后面替换的内容和前面的占位符只能按照顺序一一对应
- > 这时就出现了format方法
最基本的format语法是print 'my name is {} Hanmeimei , {}'.format("lilei's","She's ten years old"),运行的话可以发现最终结果和上面用占位符%s替换是一样的

print 'my name is {1} Hanmeimei , {0}'.format("She's ten years old","lilei's"),在{}中可以直接指定这个位置所需要的字符在后面括号中的哪个位置,从0开始

但如果把位置数错的话,也得不到想要的结果,所以可以给位置上定义,如下面的代码
print 'my name is {whose} Hanmeimei , {age}'.format(age = "She's ten years old",whose = "lilei's"),在{}中定义以下这里输入的变量是什么,在后面括号内或提前可以定义这些变量代表的字符串是什么。

哪一种更合适就取决于具体的应用场景了
其实对于用模板的方法的话也可以表示出类似于format的作用,但用到了字典,了解即可,代码格式可为print 'my name is %(whose)s Hanmeimei , %(age)s' % {'age':'She\'s ten years old','whose':'lilei\'s'},后面用字典的格式和变量名称对应起来,前面在%和s之间用小括号把变量名写入


  • 用join拼接(推荐使用),使用格式为"".join([str1,str2]),要用符号来进行分隔的话,格式为",".join([str1,str2]),这个示例是使用逗号来进行了分隔,也可使用其他的符号
    这里写图片描述

5.6 查询字符串

格式为string.find(sub[,start[,end]]),括号里面写想要查询的字符或字符串,[]里面的字符可有可无

  • 如果没有找到想要查找的字符串,会返回一个小于0的整型
  • 找到了的话,会返回该字符串的第一个字符的索引
  • 如果该字符串里面有多个想要查找的字符串,默认会返回第一个匹配到的索引,如果想要后面的索引,可以制定从第几个索引开始查找,到第几个结束

6、读写文本

格式为open(filename,method)
对文件的操作方法method常用的有三种

method详情
wwrite
rread
aappend

常用的操作为:

>>> d = open('a.txt','w')   #因为当前目录下没有a.txt这个文件,所以模式为w,它就会自己创建
>>> d.write("hi\n second hi")   #写入往文件中写入的东西
>>> d.close()   #打开一个文件后一定要关闭该文件

>>> d = open('a.txt','r')   ##此时再对该文件进行读取
>>> print d.readline()  ##readline表示对该文件逐行读取
hi

>>> print d.readline()
 second hi
>>> print d.readline()

>>> print d.read(1000)  ##read表示一次性全部读取

>>> print d.read(100000)  #由于前面都读取了该文件,所以此时它的游标在文件最后
##不论read(size)里面的size是多少,都无法读取文件
>>> d.seek(0)   #把游标放在文件的开始
>>> print d.read(100)   ##此时再进行读取,则读取这个文件成功
hi
 second hi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值