Python基础
文章平均质量分 58
yepeng0914
这个作者很懒,什么都没留下…
展开
-
1.1解压序列赋值给多个变量
问题:现在有一个包含N个元素的元组或者是序列,怎样将它里面的值解压后同时赋值给N个变 量?解决方案 :任何的序列(或者是可迭代对象)可以通过一个简单的赋值语句解压并赋值给多个变量。 唯 一的前提就是变量的数量必须跟序列元素的数量是一样的。p=(4,5)x,y=pprint(x,y) # ->4 5data = ['ACME', 50, 91.1, (2012, 12, 21)]n...原创 2019-11-10 11:24:14 · 604 阅读 · 0 评论 -
1.18映射名称到序列元素
问题 你有一段通过下标访问列表或者元组中元素的代码,但是这样有时候会使得你的代码难以阅读,于是你想通过名称访问元素。解决方案 collection.namedtuple()函数通过使用一个普通的元组对象来帮你解决这个问题。这个函数实际上是一个返回python中标准子类的一个工厂方法。你需要传递又给类型名称和你需要的字段给它,然后它就返回一个类,你可以初始化这个类,为你定义的字段传递值等。代码示例:from collections import namedtupleSubscriber=na原创 2022-02-17 15:23:52 · 91 阅读 · 0 评论 -
1.15 通过某个字段将记录分组
"""问题:你有一个字典或者实例的序列,然后你想根据某个特定的字段比如 date 来分组迭代访问。解决方案itertools.groupby() 函数对于这样的数据分组操作非常实用"""from operator import itemgetterfrom itertools import groupbyrows = [{'address': '5412 N CLARK', 'd...原创 2019-11-10 15:20:51 · 126 阅读 · 0 评论 -
1.14 排序不支持原生比较的对象 operator.attrgetter()
问题你想排序类型相同的对象,但是他们不支持原生的比较操作。class User: def __init__(self,user_id): self.user_id=user_id def __repr__(self): return "User({})".format(self.user_id)# 方法一def sort_notcompare...原创 2019-11-10 15:00:41 · 146 阅读 · 0 评论 -
1.13 通过某个关键字排序一个字典列表 operator 模块的 itemgetter 函数
问题你有一个字典列表,你想根据某个或某几个字典字段来排序这个列表。解决方案通过使用 operator 模块的 itemgetter 函数,可以非常容易的排序这样的数据结构。 假 设你从数据库中检索出来网站会员信息列表,并且以下列的数据结构返回:from operator import itemgetterrows = [{'fname': 'Brian', 'lname': 'Jone...原创 2019-11-10 13:18:51 · 124 阅读 · 0 评论 -
1.12 序列中出现次数最多的元素----collections.Counter
问题怎样找出一个序列中出现次数最多的元素呢?# -*- coding:utf-8 -*-"""collections.Counter 类就是专门为这类问题而设计的, 它甚至有一个有用的most_common() 方法直接给了你答案。作为输入, Counter 对象可以接受任意的 hashable 序列对象。 在底层实现上,一个Counter 对象就是一个字典,将元素映射到它出现的次...原创 2019-11-10 12:59:11 · 316 阅读 · 0 评论 -
1.11 命名切片
问题你的程序已经出现一大堆已无法直视的硬编码切片下标,然后你想清理下代码。解决方案假定你有一段代码要从一个记录字符串中几个固定位置提取出特定的数据字段(比如文件或类似格式):# 内置的 slice() 函数创建了一个切片对象,可以被用在任何切片允许使用的地方record = '....................100 .......513.25 ..........'SHARE...原创 2019-11-10 12:52:58 · 129 阅读 · 0 评论 -
1.9 查找两字典的相同点
# 怎样在两个字典中寻寻找相同点(比如相同的键、相同的值等等)?a = {'x' : 1,'y' : 2,'z' : 3}b = {'w' : 10,'x' : 11,'y' : 2}#为了寻找两个字典的相同点,可以简单的在两字典的 keys() 或者 items() 方法返回结果上执行集合操作print(a.keys()&b.keys())#-》{'x', 'y'...原创 2019-11-10 12:36:58 · 124 阅读 · 0 评论 -
1.8 字典的运算
问题怎样在数据字典中执行一些计算操作(比如求最小值、最大值、排序等等)?prices = {'ACME': 45.23,'AAPL': 612.78,'IBM': 205.55,'HPQ': 37.20,'FB': 10.75}# 为了对字典执行计算操作,通常需要使用Zip()函数先将键和值反转过来。min_price = min(zip(prices.values(), pr...原创 2019-11-10 12:31:06 · 190 阅读 · 0 评论 -
1.6 字典中的键映射多个值 defaultdict
"""你可以很方便的使用 collections 模块中的 defaultdict 来构造这样的字典。defaultdict 的一个特征是它会自动初始化每个 key 刚开始对应的值,所以你只需要关 注添加元素操作了。比如:选择使用列表还是集合取决于你的实际需求。如果你想保持元素的插入顺序就应该使用列 表, 如果想去掉重复元素就使用集合(并且不关心元素的顺序问题"""from coll...原创 2019-11-10 12:19:52 · 123 阅读 · 0 评论 -
1.5 实现一个优先级队列
问题怎样实现一个按优先级排序的队列? 并且在这个队列上面每次pop操作总是返回优先级最高的那个元素"""通过引入另外的 index 变量组成三元组 (priority, index, item) ,就能很好的避免上面 的错误, 因为不可能有两个元素有相同的 index 值。"""import heapqclass PriorityQueue: def __init__...原创 2019-11-10 12:11:39 · 105 阅读 · 0 评论 -
1.4 查找最大或最小的N个元素 ,nlargest() 和 nsmallest()
怎样从一个集合中获得最大或者最小的N个元素列表?nums = [1, 8, 2, 23, 7, -4, 18, 23, 42, 37, 2]heapq.heapify(nums)print( nums ) # ->[-4, 2, 1, 23, 7, 2, 18, 23, 42, 37, 8]portfolio = [ {'name': 'IBM', 'shares'...原创 2019-11-10 12:04:34 · 322 阅读 · 0 评论 -
1.3 保留最后N个元素--collections.deque
问题在迭代操作或者其他操作的时候,怎样只保留最后有限几个元素的历史记录?from collections import dequedef search(lines,parttern,history=5): prvious_lines=deque(maxlen=history) for li in lines: if parttern in li: ...原创 2019-11-10 11:43:07 · 173 阅读 · 0 评论 -
1.2 解压可迭代对象赋值给多个变量
问题如果一个可迭代对象的元素个数超过变量个数时,会抛出一个 ValueError 。 那么怎样才能从这个可迭代对象中解压出N个元素出来?record = ('Dave', 'dave@example.com', '773-555-1212', '847-555-1212')name, email, *phone_numbers = recordprint(name) # ->Da...原创 2019-11-10 11:35:06 · 162 阅读 · 0 评论