Python入门-对象类型

 

Python语言中,数据以对象的形式出现,无论是Python提供的内置对象,还是使用Python语言创建的对象。

程序-〉模块-〉语句-〉表达式-〉处理对象

为何区分对象类型

1 不同类型对象运算规则不同

2 不同类型对象在计算机内表示方式不同

3 为何区分整数与浮点数

 浮点数表达能力更强

 浮点数有精度损失

 CPU有专门的浮点运算部件


>>> print(3.3==1.1*3)

False


内置对象一览

对象类型例子

数字123,12.5,5+10j

字符串'hello world!',"Python is best."

元组(5,'spam',12,'A')

列表[1,2,[3,4,'haha'],5]

字典{'abc':123,'efg':456,'qwer':'1234'}

集合{1,2,3,4,5} ,set('hello world!')

文件myfile = open('test.py','r')

其他None,布尔型


数字

int(整型)

  在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647

  在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807


long(长整型)

  跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。

  注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。


float(浮点型)

  浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。


complex(复数)

  复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。


字符串

字符串(String)是一个字符的序列,用于记录文本信息。序列中的元素包含一个从左到右的顺序,可以根据它们的相对位置进行存储和读取,其他类型的序列包括列表和元组。

注:不可变序列只能通过位置读取,不能存储(字符串和元组是不可变序列)。

三种定义方式:

单引号括起来

s = 'hello world'

双引号括起来

s = "hello world"

三引号括起来("""或''')

s = """this is a test

hello world."""


用转义序列代表特殊字符

\\ --反斜线(保留\)

\' --单引号

\" --双引号

\n  --换行

\t  --水平制表符

\v --垂直制表符

\r --回车

抑制转义

>>>s = r'D:\tmp\a.txt'

>>>s

'D:\\tmp\\a.txt'


基本运算

长度(len()函数)

拼接(+)

重复(*)

成员运算符(in)


示例:

计算字符串中元音字母数目

def vowels_count(s):

         ret= 0

         foritem in s:

                   ifitem in 'aeiouAEIOU':

                            ret+=1

         returnret


索引与分片

Python语言中索引是按照最前面的偏移量进行编码,索引的起始位置为0。

例如:

>>>s = 'Hello'

>>>s[0]

'H'

>>>s[2]

'l'

Python语言支持反向索引,从最后一个开始,其索引值是-1

>>>s[-1]

'o'

>>>s[-2]

'l'


分片操作,从序列对象中提取一部分。一般形式为X[I,J],表示从序列对象X中提取从偏移为I,直到但不包括J的内容。

例如:

>>>s[1:3]

'el'

>>>s[1:-1]

ell


分片操作中,左边界默认为0,右边界默认为序列长度,这样可以在分片时省略左右边界。

例如:

>>>s[:-1]

'Hell'

>>>s[2:]

'llo'

>>>s[:]

'Hello'


扩展分片,可选的第三个索引,用于步进。形式X[I,J,K],表示对序列X从偏移I,直到偏移J-1,每隔K个元素提取一个对象。K默认值为1。

例如:

>>>s='abcdefghijklmnopqrstuvwxyz'

>>>s[1:10:3]

'beh'

>>>s[::4]

'aeimquy'

>>>s[::-1]

'zyxwvutsrqponmlkjihgfedcba'

>>>s[5:1:-2]

'fd'


字符串方法

replace(old,new,count=-1) 替换子串

find(sub) 寻找子串,找到返回子串位置,否则返回-1

split(sep) 字符串切分,根据sep切分为字符串数组


更多方法:

>>> dir(str)

['__add__', '__class__', '__contains__',

'__delattr__', '__dir__', '__doc__', '__eq__',

'__format__', '__ge__', '__getattribute__',

'__getitem__', '__getnewargs__', '__gt__',

'__hash__', '__init__',

'__init_subclass__', '__iter__', '__le__', '__len__', '__lt__',

'__mod__', '__mul__', '__ne__', '__new__',

'__reduce__','__reduce_ex__',

'__repr__', '__rmod__', '__rmul__',

'__setattr__', '__sizeof__', '__str__',

'__subclasshook__', 'capitalize',

'casefold', 'center', 'count', 'encode', 'endswith',

'expandtabs', 'find', 'format',

'format_map', 'index', 'isalnum', 'isalpha',

'isascii', 'isdecimal', 'isdigit',

'isidentifier', 'islower', 'isnumeric', 'isprintable',

'isspace', 'istitle', 'isupper', 'join',

'ljust', 'lower', 'lstrip', 'maketrans', 'partition',

'replace', 'rfind', 'rindex', 'rjust',

'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines',

'startswith', 'strip', 'swapcase', 'title',

'translate', 'upper', 'zfill']


字符串比较

 按顺序依次比较每个位置上的字符,如果相同就比较下一个,如果不同大小关系就由这两个字符的大小关系决定。


字符串格式化format方法

{}的格式 {field name,align

width.precision type}

print("PI is {}".format(math.pi))

print("PI is

{:4.2f}".format(math.pi))


列表与元组

内建数据结构,用来存储一系列元素,列表与元组的区别是,元组是不可变对象,不能修改,列表可以修改。

元组:

t = (1,2,3,4,5)

列表

l = [1,2,3,4,5]


列表和元组与字符串一样,都是有序序列,所以列表和元组与字符串有很多相同点:

1 索引运算[]

2 切片[:]

3 拼接和重复 + *

4 成员运算 in

5 长度 len

6 循环迭代 for


与字符串只能包含字符不同,列表和元组可以包含多种类型的对象。

列表的方法

append() #追加

extend() #扩充

pop() #删除

remove() #删除

sort() #排序

reverse() #逆序



列表赋值

a = [1,2,3,4]

b = a

b[1] = 100


b = [:]

b[1] = 100


嵌套列表

x = [[1,2,3,[4,5,6],[7,8,9]]]

len(x) = ?

len(x[1]) = ?


列表解析

列表解析:由原列表创建新列表的简单方法。列表解析语法是从集合理论表示法中的一种结构衍生出来的,也就是对集合中的每个元素应用某一种运算。

 [表达式 for 变量 in 列表 if 条件]


例如生成x平方的序列:

 ist= []

 forx in range(1,10)

         ist.append(x**2)

 print(ist)


列表解析:

 ist= [x**2 for x in range(1,10)]


使用列表解析求输入数字x的因数和

 例如输入6 ,因数和为1+2+3+6 = 12

 sum([i for i in range(1,x+1) if x%i == 0])



字典与集合

字典:一系列“键-值(key-value)”对

通过“键”查找对应的“值”

 电话本,字典

 java中的Map

(HashTable,HashMap)


创建字典

 使用{}创建字典

 使用:指明键:值对

 myDict = {'小李':87977111,'李明':13598881112,'小丁':98761221}

 字典中的键必须是不可变的且不可重复,值可以是任意类型。


访问字典

 使用[]运算符,键作为索引

 print(myDict['小李'])

 增加新的键值对:

 myDict['小王']=17621231232


字典运算符和方法

 len

 keyin myDict

 forkey in myDict


myDict.items() #全部键值对

myDict.keys() #全部键

myDict.values() #全部值

myDict.clean() #清空字典


示例:

计算一个字符串中每个字母出现的次数


count = {}

for i in 'hello world':

         ifi in count:

                   count[i]+= 1

         else:

                   count[i]= 1


集合(Set)

无序不重复元素集

和字典类似,但是只有“键”没有“值”


创建

 x =set()

 x ={key1,key2,...}


添加和删除

 x.add()

 x.remove()


集合的运算符

-  差集

& 交集

| 并集

!= 不等于

== 等于

in 成员

for key in set 枚举


文件

计算机中由操作系统管理的具有名字的存储数据的基本单元。

内置open函数

open(file, mode='r', encoding=None)

file -- 文件名

mode --模式 r读; w写; a追加; b 二进制模式;t文本模式;+ 同时读写

encoding --编码(只对文本模式有效,默认取系统编码,可参考codesc模块)


文件对象的方法:

file.read()                                      --把整个文件读入单一字符串

file.read(N)                          --读取N个字节到一个字符串

file.readline()                      --读取下一行(包括换行符)

file.readlines()                    --读取整个文件到字符串列表(可迭代对象)

file.write(aString)              --写入字符串到文件

file.writelines(aList)                   --把列表内所有字符串写入文件

file.close()                           --关闭文件

file.flush()                            --输出缓冲区刷新到硬盘

file.seek(N)                         --文件指针向后跳转到偏移量N处


注:目前的Python解释器在回收文件对象时,会自动关闭文件,这意味着并不需要总是手动关闭文件,但这并不是语言定义的一部分,所以手动调用close方法关闭文件是个好习惯。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,200评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,526评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,321评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,601评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,446评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,345评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,753评论 3 387
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,405评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,712评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,743评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,529评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,369评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,770评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,026评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,301评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,732评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,927评论 2 336

推荐阅读更多精彩内容

  • Python标识符 在 Python 里,标识符有字母、数字、下划线组成。在 Python 中,所有标识符可以包括...
    tianyi6677阅读 1,078评论 0 3
  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,540评论 1 118
  • 写在前面的话 代码中的# > 表示的是输出结果 输入 使用input()函数 用法 注意input函数输出的均是字...
    FlyingLittlePG阅读 2,709评论 0 8
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,345评论 0 5
  • 每个人生活中都有一些看似迈不过去的坎这时候我们会悲伤我们会心急,我们能做的就是在这些忧郁的日子里承受这些苦难并不断...
    瓦里克斯123阅读 232评论 0 0