内置实现detail: 1.不用分配或者管理存储的数组。使用引用值计数的垃圾回收策略,自动回收无用的对象的内存空间,这里内置类型作为右值为一个具体的对象。
1.python 数据类型:
- 数字,字符串,列表[ ] ,字典{ },元组(),
- 序列可反向索引[-1]:最后一个元素,[-2]倒数第二个元素。
- 字典映射:{ key : value}
- 元组,不可改变的列表,与字符串一样不可变 t = ( )。 有.index() .count() 方法。没有append 方法。
- 对变量赋新值并非替换原始对象而是让该变量引用完全不同的对象。
- 2 字符串
- len 包括转义字符的长度。
- 三重引号“““ 编写多行文本”””
-
- for x in range(0,10):
- print (x,end = '') 出错???
-
- s[a:b]表示取s[a]至s[b-1]的数。s[a:b:c]中c为步进值。
- s.rstrip()方法可以去掉末尾的换行符。
- 修改字符串:通过分片再合并,合并用‘+’;或者用s.replace(‘被替换的’,‘新的’)
- 用list(s),将字符串转换为元素可改的list, 修改完成后调用‘xxx’.join(s)可以将s(此处s为列表)与xxx挨个合成。
- 字符串格式化: %d %s %(xxx , 'ddd' )
- 3 列表
- 类似链表,但元素类型各异,insert(position,content)
- index( xxx ) : xxx的偏移
- del s[,,,]删除列表中的
- set是无序不重复的集合,而list 可以重复。
- 4字典
- 类似map,多个pair的键值类型不同,value类型也可以不同。
- {a:bbbb} 或者创建空字典,挨个往里添加。或者dict(aaa=xxx,bbb=ccc)次法要求键值为字符串。或者dict( [(),()] )
- 5元组
- (xxx,)一个元素的元组,元组的元素不可改。
- range(a,b,c) :生成a 到b-1的值,步进值为c.
- zip()并行遍历,以参数长度最短的为准。
- 文件迭代器xxx.readline
- 迭代器iter()
- 在def内不增加global(或nonlocal)声明,没有办法在函数内改变函数外部的变量。
- 函数参数中*arg:表示将收集可变数量的参数为一个新元组。**arg:表示将关键字形成字典,放于参数列表之后。
3.类
- self相当于当前this,指向当前对象。
- _init_()为构造函数。
- pass:占位字符,无意义。self.__class__.__name__
- python类中的方法默认为public,私有方法为__function()[方法前增加双下划线]
- self.__class__.__name__ 显示类名。
- 函数的可变参数function(a,b,*c):*c为可接受多个参数的变量。而function(a,**b)中对a指定的传参后,b接受其他参数如function(a=4,b=3,c=3)中**b为接受3,3的dict。
- python 类方法可以互相调用但注意加(self)参数。
- list 求交,差,并等操作,方法有很多,如果用变成set的方法的话就要要求list中没有重复的元素。
c = list(set(lista).inersection(listb)) //求交 用c = [item for item in lista if item in listb]
c = list(set(lista).difference(listb)) //求差,在a不在b. 用c = [item for item in lista if item not in listb]
c = list(set(lista).union(listb)) //求并
-
hash:只能hash值改变id也会改变的对象(生存周期内不变的对象),list不可以,因为元素的值改变了,对象(该list对象)的id没有改变,但是a = 1 hash(a)是可以的,因为1是不变的a是指向了1,hash(a)实际上是hash(1)。
-
编写有中文报错,
使用 : # -*- coding:utf-8 -*-
-
除法是若要整数除法的结果为小数,则需要强制转换除数的类型。
-
注意缩进:用tab 和 空格键 二选一不能混用,混用会报错。
-
filter:一个函数和一个序列把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素。如filter(function,list),也就是这个function必须是返回值是true or false.
-
copy: python用赋值号,对变量来说是拷贝,对list之类的就是引用了,使用时需要注意。有copy函数,copy.copy() 和copy.deepcopy().deepcopy是完整的复制,值相同但object不是同一个。copy就是原来的一个别名。
-
list初始化为空,长度为n a = []*n
-
extend(),在原list上增加另一个列表的每一个元素。
-
list的remove()函数,remove(a)删除列表中第一个值为a的元素。
-
index,index(a)找到第一个值为a的元素的下标。