Python笔记(一) 数字、动态类型、字符串

来源:互联网 发布:图片锐化软件 编辑:程序博客网 时间:2024/05/18 10:17
1.数字 
基本的数字类型没什么特别需要注意的,python中有一个特别的类型,集合。
1)集合的基本操作:
x=set('adbce'), y=set('bdxyz)  #赋值'e' in x  #检查集合中是否有某元素,返回布尔值x - y     #集合的差集x | y     #集合的交集x & y    #集合的并集x ^ y     #相当于异或计算,返回两个集合中没有重复的部分x > y, x < y #判断是否是子集关系
(有不懂的总能调用help函数来查看,例如help('set'))
2)为什么用集合?
由于集合的数学特性,比方说可以过滤重复项,例如
L = [1,2,1,3,2,4,5]L=list(set(L))
2.动态类型
Python编程中最基本的概念:动态类型以及它提供的多态性,这是Python灵活性和简洁性的基础。
变量和对象保存在内存中的不同部分,并通过连接相关联。在运行a=3之后,变量a变成对象3的一个引用,在内部,变量事实上是到对象内存空间的一个指针。
1)垃圾收集:在Python中,每当一个变量名被赋予了一个新的对象,之前的那个对象占用的空间就会被回收(如果没有被其他的变量名或对象引用的话)。Python在每个对象中设置一个计数器,记录了当前指向该对象的引用的数目,一旦为0,内存空间就会自动回收。这以为这在脚本中可以任意使用对象而不需要考虑释放内存空间(和C,C++相比)。
2)共享引用:
a = 3b = a
a和b都引用了相同的对象,也就是指向了相同的内存空间.
如果再执行
a = a + 2
对b是没有影响的,因为最后的赋值将a设置为一个完全不同的对象
然而
L1 = [1,2,3]L2 = L1L1[0] = 24
看到的结果就会是L1 [24,2,3], L2 [24,2,3].因为这个列表对象是与其他对象共享的。如果不想要这样的情况发生,需要Python拷贝对象,而不是创建引用。例如:
L1 = [1,2,3]L2 = L1[:]
这时执行
L1[0] = 24
就不会对L2产生影响。
3.字符串
Python的字符串是不可变序列,不可以在原处修改。实际上,字符串是序列的一种类型。
1)单双引号是一样的
2)转义符号
和C语言中基本一致,但是\0并不会结束一个字符串。
3)raw字符串
如果字母r出现在字符串第一个引号之前,它将会关闭转义机制。例如打开文件时
myfile = open(r'C:\new\text.dat', 'w')
4)三重引号 (块字符串)
以三重引号开始(单引号双引号皆可),并紧跟任意行数的文本,并且以开始时相同的三重引号结尾。
可以用于注释一段代码
5)字符串的基本操作
'abc' + 'def'               #字符串合并'abc' * 3                   #字符串重复n次S[0],S[-2]                #字符串索引S[1:3], S[1:], S[:-1] #字符串分片
分片S[i:j]表示获取从偏移为i开始,直到但不包括偏移为j的元素。
附上图片说明索引和分片的规则:

分片也可以用第三个参数,来表示步长,即S[i,j,k],默认为1,取-1时表示分片从右向左进行
6)修改字符串
由于Python中的字符串是不可变序列,若要改变一个字符串,需要利用合并、分片工具
S = 'abc'S = S + 'b'   #'abcb'S = S[:2] + 'aa' + S[-1]  #'abaab'
当然也可以调用自带函数replace(),split()等等
7)字符串格式化表达式(%表达式)
类似于C语言
'%s %s %d apple.' % ('I', 'have', 1)I have 1 apple.
8)字符串格式化调用的format方法
使用主体字符串作为模板,并且接受任意多个表示将要根据模板替换的值得参数。在主体字符串中,花括号通过位置或关键字({1}or{food})之处替换目标。例如
template = '{0}, {1} and {third}';template.format('a', 'b', third='c')



0 0
原创粉丝点击