python学习记录(1)

来源:互联网 发布:绝地求生 dx12优化 编辑:程序博客网 时间:2024/06/06 08:25

Python对象类型(一)

Python程序:程序由模块构成、模块包含语句、语句包含表达式、表达式建立并处理对象

Python对象:内存中的一部分包含数据和操作的集合

使用python内置对象的原因:
利用内置对象可以提高编程效率。2,在建立自己对象的时候,需要利用内置对象。3.内置对象经过优化,效率更高。4,内置对象在各个环境中通用,都是标准的

Python核心数据类型:
数字、字符串、列表、元组、字典、文件、集合、其他类型、编程单元类型、与实现相关的类型。

Python中没有烈性声明,运行的表达式的语法决定了创建和使用的对象的类型。(‘spam’可以理解为一个常量表达式,常量表达式并不一成不变的)

Python是动态类型(自动跟踪你的类型,而不是要求声明代码),也是强类型语言(只能对一个对象进行适合该类型的有效的操作)

字典和列表是强大的数据表现工具,列表提供了其他对象的有序集合,而字典是通过建存储对象的。

1. 数字类型:
1) 整数、浮点数、少见类型(有虚部的复数,固定精度的十进制数、带分子和分母的有理分数和集合)
2) 支持一般的数学运算,例如+、-、*、/、**等。
3) 也可以import math或者random等更高级数学工具
2. 字符串:
1) 在python中作为序列(包含其他对象的有序的集合)
2) 序列的操作:字符串的正向、反向索引。同时也支持分片操作。
>>> s='hello world'
>>> s[0]
'h'
>>> s[-1]
'd'
>>> s[0:-2]
'hello wor'
>>> s[0:]
'hello world'
>>> s[:-1]
'hello worl'
>>> s[:len(s)-1]
'hello worl'
>>> s[:len(s)]
'hello world'
3) 字符串也支持使用‘+’进行合并,或者‘*’进行重复
>>> s+'i am ironGYI'
'hello worldi am ironGYI'
>>> s*2
'hello worldhello world'
4) 不可变性:字符串在创建后不能就地改变。我们可以通过建立一个新的字符串并以同一个变量名进行复制。(python在运行过程中会清理就地对象)
>>> s[0]='z'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

在python中,每个对象都可以分为不可变心过着可变性。在核心类型中,数字、字符串、元组都是不可变的。列表和字典是可变的。
5) 类型特定方法:序列操作是通用得,在列表和元组中同样适用。但是字符串有自己特定的方法:
>>> s='hello world'
>>> s.find('wor')
>>> s.replace('w','W')
'hello World'
>>> >>> s.split(' ')
['hello', 'world']
>>> s.upper()
'HELLO WORLD'
>>> s.isalpha()
False
6) 字符串还支持一个格式化的高级替代操作,可以以一个表达式形式和一个字符串方法调用形式使用:
>>> s='%s %s' % ('hello','world')
>>> s
'hello world'
>>> s2='{0} {1}'.format('hello','world')
>>> s2
'hello world'
>>> s3='{h} {w}'.format(h='hello',w='world')
>>> s3
'hello world'
尽管序列操作通用,但是方法不通用。一条简明法则:可作用于多种类型的通用性操作都是以内置函数或表达式的形式出现(例如len(s),s[0]),但是类型特定的操作是一方法调用的形式出现。
7) 编写字符串的其他方法。1,添加反斜线转义序列表示特殊的字符、字符串可以包含在单引号或双引号中,2,他也允许在三个引号中包括多行字符串常量,当采用这种形式的时候,所有的行都合并在一起,并自每一行的末尾添加换行符,3,python也支持raw字符串常量,即去掉反斜线转义机制(这样的字符串通常以r开头)4,python也支持unicode字符串形式从而支持国际化。
>>> s='A\nB\tC'
>>> print(s)
A
B C
>>> len(s)
5
>>> ord('\n')
10
>>> msg="""
... hello world !
... 'i am ironGYI'
... ""the end""
... """
>>> msg
'\nhello world !\n\'i am ironGYI\'\n""the end""\n'
8) 模式匹配,调用re库进行正则表达式方式功能。这个模块也包含了搜索、分割、替换等调用。

3. 列表
1) 列表是python最通用的序列。列表是一个任意类型的对象的位置相关的有序集合。
2) 序列操作,与字符串唯一的不同就是其结果为列表而不是字符串。
>>> s='hello world '*3
>>> l=s.split(' ')
>>> l
['hello', 'world', 'hello', 'world', 'hello', 'world', '']
>>> l[5]
'world'
>>> l[0:]
['hello', 'world', 'hello', 'world', 'hello', 'world', '']
>>> l[:-1]
['hello', 'world', 'hello', 'world', 'hello', 'world']
>>> l[2:4]
['hello', 'world']
3) 类型特定操作
>>> l.append('end')
>>> l
['hello', 'world', 'hello', 'world', 'hello', 'world', '', 'end']
>>> l.pop(-2)
''
>>> l
['hello', 'world', 'hello', 'world', 'hello', 'world', 'end']
>>> l[-1]='enda'
>>> l
['hello', 'world', 'hello', 'world', 'hello', 'world', 'enda']
>>> l.insert(3,2)
>>> l
['hello', 'world', 'hello', 2, 'world', 'hello', 'world', 'enda']
>>> l.remove(2)
>>> l
['hello', 'world', 'hello', 'world', 'hello', 'world', 'enda']
>>> l.sort()
>>> l
['enda', 'hello', 'hello', 'hello', 'world', 'world', 'world']
>>> l.reverse()
>>> l
['world', 'world', 'world', 'hello', 'hello', 'hello', 'enda']
4) 边界检查:超越边界访问会提示错误。增长列表可以调用append这样的列表方法。
5) 嵌套:列表可以包含另一个列表等,这种特性直接应用是实现矩阵
>>> M=[[1,2,3],[1,2,3],[1,2,3]]
>>> M[1]
[1, 2, 3]
>>> M[1][2]
3
6) 列表解析:列表解析是一个更高级的操作。成为列表解析表达式(list comprehension expression),从而提供了一种更便捷的方法:
>>> M=[[1,2,3],[1,2,3],[1,2,3]]
>>> col2=[row[1] for row in M]
>>> col2
[2, 2, 2]
>>> [row[1]+3 for row in M]
[5, 5, 5]
>>> [row[1]+3 for row in M if row[1]%2==0]
[5, 5, 5]
diag=[i for i in M for a in i if a%2==0]
7) 列表解析以及相关内容函数map和filter
8) 括号中的解析语法也可以用来创建产生所需结果的生成器。

原创粉丝点击