Python学习

来源:互联网 发布:mysql nullif 编辑:程序博客网 时间:2024/06/08 17:45
#列表基本操作lst = [1,2,3]a = [4,5,6]lst.append(x)   #添加元素x    a[len(a):] = [x]lst.extend(L)   #用列表L扩展列表  a[len(a):] = Llst.insert(i,x) #在i位置添加元素x  a.insert(len(a),x)相当于a.append(x)lst.remove(x)   #删除列表中值为x的第一个元素lst.pop([i])    #删除指定位置i的元素;默认删除并返回最后一个元素lst.clear()     #删除所有项目  del a[:]lst.index(x)    #返回值为想的第一个元素的索引,未找到引发ValueError错误lst.count(x)    #返回x出现在列表中的次数lst.sort(key=None,reverse=False)    #排列列表中的项lst.reverse()   #反转列表lst.copy()      #返回列表的浅副本                # insert remove sort 只修改列表,没有可打印返回值#列表作为栈使用lst = [3,4,5,5]lst.append(7)lst.pop()       #实现先进后出的栈结构,append()添加到栈顶,pop()从栈顶检出#列表作为队列使用   #在列表的末尾添加和弹出元素非常快,但是在列表的开头插入或弹出元素却很慢 (因为所有的其他元素必须向左移一位)。#collections.deque 被设计用于快速地从两端操作from collections import dequequene = deque([10,100,1000])quene.append(1)quene.popleft() #实现先进先出的队列结构#列表推导式(列表推导式由一对方括号组成,方括号包含一个表达式,其后跟随一个for子句,然后是零个或多个for或if子句)squares = []for x in range(10):    squares.append(x**2)等价于》squares = list(map(lambda x:x**2,range(10)))squares = [x**2 for x in range(10)]#例:求pi中数字出现频率import collectionsfrom math import pia=round(pi,15)b=[x for x in str(a) if x!='.']collections.Counter(b)#嵌套的列表推导式matrix = [[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12],][[row[i] for row in matrix]for i in range(4)]      #输出为[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]#del语句:根据索引而不是值从列表中删除元素del lst[0]del lst[:]del lst


专业模块:Collections模块

实现了替代Python的通用内置容器(字典、列表、元组、集合)的专业容器数据类型

namedtuple()

这是个工厂方法,生成有命名字段的tuple子类(tuple中的元素可以用名字的方式来访问)

deque(双向队列)

一个能在“队列”两端快速出队、入队的,类似于队列的(list-like)的容器 (双向队列)

ChainMap

为多个映射创建单一视图的类字典类型 (模仿作用域搜索)

Counter(计数器)

dict子类,用于计算可哈希对象的个数

OrderedDict(有序字典)

dict 子类 记录着数据成员添加的顺序

defaultdict

调用一个工厂函数来为dict的values缺失提供值

UserDict

将字典包裹起来使得创建字典的子类更容易

UserList

将列表对象包裹起来使得创建列表的子类更容易

UserString

将字符串对象包裹起来使得创建字符串的子类更容易

collections.deque对象:

初始化的双向队列,是栈和队列的一般化(‘double-ended queue’)。在队列两端添加(append)或弹出(pop)元素的复杂度大约是O(1),Deque的效率很高。

append(x)           x 从右端入队.appendleft(x) x 从左端入队.clear() 清空队列中的所有元素,deque的长度变为0.copy() 对deque进行浅复制.count(x) 计算deque中值等于 x 的个数.extend(iterable) 往deque的右端添加迭代器的元素extendleft(iterable) 在左侧扩展可迭代的附加元素。index(x[, start[, stop]])  返回x在deque中的位置(在索引开始之后或索引停止之前)。如果未找到,则返回第一个匹配或引发ValueError。insert(i, x) 将x插入到位置i的deque中。如果插入将导致有界deque增长超过maxlen,则会引发IndexError。pop() 删除并从右侧的双端队列中返回的元素。如果没有元素,则引入IndexError。popleft()移除并返回一个元素从 deque 的左侧。如果没有元素,则引入IndexError。remove(value)         删除值的第一次出现。如果未找到,请引发ValueError。reverse() 反转deque的元素,然后返回None。rotate(n) 将deque向右移动n 个元素。如果 n 是负数, 则向左旋移动.向右旋移动1个元素等价于d.appendleft(d.pop()).
maxlen  只读属性,返回Deque 的最大长度。如果没有边界,则返回None.


collections.Counter对象:

Counter是dict的子类,用于计数可哈希对象。它是一个无序的容器,元素被存储为字典键,它们的计数被存储为字典值。计数允许包括零或负计数的任何整数值。

c = Counter('abcdeabcdabcaba') #计算字符串元素出现次数#返回值为 Counter({'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1})c = Counter()                    # a new, empty counterc = Counter('gallahad')            # a new counter from an iterablec = Counter({'red': 4, 'blue': 2})       # a new counter from a mappingc = Counter(cats=4, dogs=8)         # a new counter from keyword argsc.most_comom(i)#出现次数前i的元素  [('a', 5), ('b', 4), ('c', 3)]sorted(c)#对唯一元素值进行排序  ['a', 'b', 'c', 'd', 'e']''.join(sorted(c.elements()))#得到c中的所有元素并排序  'aaaaabbbbcccdde'sum(c.values())#返回计数值数组,并求和   15c[‘a’]#返回某一元素的计数  5# Counts更新for elem in “shazam”:#再次调用cc[elem] +=1# +=1使计数为正确值c[‘a’] = 7d = collections.Counter(‘shibingfan’)c.update(d)#用另一个Counter更新已有对象c.subtract(‘shibingfan’)#减去另一个Counter对象中的元素计数,可以为负值c.get(k[,d])#若k在c中,返回计数;反之返回d,无d返回Nonec.items()#得到cc.keys()#得到所有键c.pop(k[,d])#存在k,则取出对应的计数;反之返回d,无d引发KeyErrorc.popitem()#弹出键值对,无则引发KeyErrorc.setdefault(k[,d])# c.get(k[,d]) ,k不在c中则设置c[k]=ddel c[‘b’]#删除所有b元素c.cear()#删除所有计数



原创粉丝点击