Python类型和运算

本文探讨了Python中的对象类型,强调了内置类型的便利性和效率。这些类型包括数字、字符串和列表,它们是Python语言的标准组成部分。数字支持基本数学运算,字符串具有不可变性并提供了丰富的操作方法,列表则允许动态增删元素并可进行排序等操作。
摘要由CSDN通过智能技术生成

1 python对象类型

1 程序由模块构成

2 模块包含语句

3 语句包含表达式

4 表达式建立并处理对象

2 使用内置类型

1 内置对象使程序更容易编写

对于简单的任务,内置类型往往能够变现问题领域的所有结构。免费得到了如此强大的工具。例如,集合(列表)和搜索表(字典),可以马上使用它们。仅使用python内置对象类型就能够完成很多工作

2 内置对象是扩展的组件

对于较为复杂的任务,或许仍需要提供你自己的对象,使用python的类活C语言的接口。但就像本书稍后要介绍的内容,人工实现的对象往往建立在像列表和字典这样的内置类型的基础之上

例如,堆栈数据结构也许会实现为管理和定制内置列表的类

3 内置兑现往往比定制的数据结构更有效率

在速度方面,python的内置类型优化了用C实现数据结构算法。尽管可以实现属于自己的饿类似的数据类型,但往往很难达到内置数据类型所提供的性能水平

4 内置对象是语言的标准的一部分

因为Python的内置工具是标准的,它们一般都是一致的

独创的框架则在不同的环境都有所不同

 

3 Python的核心数据类型

1 内置对象

对象类型例子 常量、创建
数字1234,3.1415,3+4j,Decimal,Fraction
字符串‘spam’,“guido‘s”,b’a/xolc‘
列表[1 , [2,'three'] , 4]
字典{'food' : 'spam' , 'taste' : 'yum'}
元组(1, 'spam' , 4 , 'U')
文件myfile=open('eggs', 'r')
集合set('abc') , {'a' , 'b' , 'c'}
其他类型类型、None、布尔型
编程单元类型函数、模块、类
与实现相关的类型编译的代码堆栈跟踪

1 数字

Python中的数字支持一般的数学运算

加号+代表加法,星号*表示乘法,双星号**表示乘方

>>> 123+222
345
>>> 1.5*4
6.0
>>> 2**100
1267650600228229401496703205376

打印浮点数:全精度以及用户友好的形式

python一起分发的还有一些常用的数学模块,模块只不过是我们导入以供使用的一些额外工具包

>>> import math
>>> math.pi
3.141592653589793
>>> math.sqrt(85)
9.219544457292887

math模块包括更高级的数学工具,如函数,而random模块可以作为所及数字的生成器和随机选择器

>>> import random
>>> random.random()
0.3266347154552137
>>> random.choice([1,2,3,4])
3

2 字符串

字符串是的单个字符的字符串的序列,其他类型的序列还包括列表和元组

1 序列的操作

>>> s='spam'
>>> len(s)
4
>>> s[0]
's'
>>> s[1]
'p'

反向索引

>>> s[-1]
'm'
>>> s[len(s)-1]
'm'

在一个分片中,左边界默认为0,并且右边界默认为分片序列的长度

>>> s[1:]
'pam'
>>> s
'spam'
>>> s[0:3]
'spa'
>>> s[:-1]
'spa'
>>> s[:]
'spam'
>>> s
'spam'
>>> s+'xyz'
'spamxyz'
>>> s
'spam'
>>> s*8
'spamspamspamspamspamspamspamspam'

2 不可变性

字符串在Python中具有不可变性——在创建后不能就地改变

可以通过建立一个新的字符串并以同一个变量名对其进项赋值

>>> s
'spam'
>>> s[0]='z'
Traceback (most recent call last):
  File "<pyshell#31>", line 1, in <module>
    s[0]='z'
TypeError: 'str' object does not support item assignment
>>> s='z'+s[1:]
>>> s
'zpam'

在核心类型中,数字、字符串和元组是不可变的

列表和字典不是这样的

3 类型特定的方法

字符串还有一些独有的一些操作作为方法存在(对象的函数,将会通过一个调用表达式触发)

字符串的find方法是一个基本的子字符串查找的操作(它将返回一个传入子字符串的偏移量,或者没有找到的情况下返回-1),而字符串的replace方法将会对全局进行搜索和替换

>>> s.find('pa')
1
>>> s.find('s')
-1
>>> s
'zpam'
>>> s.replace('pa','XYZ')
'zXYZm'
>>> s
'zpam'

split实现通过分隔符将字符串拆分为子字符串,大小写变换,测试字符串的内容(数字、字母或其他),去掉字符串后的空格字符

>>> line='aaa,bbb,ccccc,dd'
>>> line.split(',')
['aaa', 'bbb', 'ccccc', 'dd']
>>> s='spam'
>>> s
'spam'
>>> s.upper()
'SPAM'
>>> s.isalpha()
True
>>> line='aaa,bbb,ccccc,dd\n'
>>> line=line.rstrip()
>>> line
'aaa,bbb,ccccc,dd'

字符串还支持一个叫做格式化的高级替代操作

>>> '%s,eggs,and %s' % ('spam','SPAM!')
'spam,eggs,and SPAM!'
>>> '{0},aggs,and {1}'.format('spam','SPAM!')
'spam,aggs,and SPAM!'

4 寻求帮助

dir查询内置函数属性

>>> dir(s)
['__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', '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']

help函数查看函数具体内容

>>> help(s.replace)
Help on built-in function replace:
​
replace(...) method of builtins.str instance
    S.replace(old, new[, count]) -> str
    
    Return a copy of S with all occurrences of substring
    old replaced by new.  If the optional argument count is
    given, only the first count occurrences are replaced.

5 编写字符串的其他方法

>>> s='A\nB\tC'
>>> len(s)
5
>>> ord('\n')
10
>>> s='A\0B\0C'
>>> len(s)
5

5 模式匹配

导入一个re的模块

>>> import re
>>> match = re.match('Hello[\t]*(.*)world','Hello   Python world')
>>> match.group(1)
'   Python '

这个例子的目的是搜索子字符串,这个子字符串以“Hello,” 开始,后面跟着零个或几个制表符或空格,接着有任意字符串并将其保存至匹配的group中,最后以”world.“结尾。如果找到了这样的子字符串,与模式中括号包含的部分匹配的子字符串的对应部分保存为组

>>> match = re.match('/(.*)/(.*)/(.*)','/usr/home/lumberjack')
>>> match.groups()
('usr', 'home', 'lumberjack')

3 列表

1 序列操作

>>> L = [123, 'spam', 1.23]
>>> len(L)
3
>>> L[0]
123
>>> L[:-1]
[123, 'spam']
>>> L+[4,5,6]
[123, 'spam', 1.23, 4, 5, 6]
>>> L
[123, 'spam', 1.23]

2 类型特定的操作

列表没有固定大小,也就是说能够按照需要增加或减小列表大小,来响应其特定的操作 append插入数据 pop移除数据

>>> L.append('NI')
>>> L
[123, 'spam', 1.23, 'NI']
>>> L.pop(2)
1.23
>>> L
[123, 'spam', 'NI']

sort方法,默认按照升序对列表进行排序

reverse对列表进行翻转

>>> M=['bb','aa','cc']
>>> M.sort()
>>> M
['aa', 'bb', 'cc']
>>> M.reverse()
>>> M
['cc', 'bb', 'aa']

3 边界检查

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值