python每日一练
wangb0asdas1
这个作者很懒,什么都没留下…
展开
-
Python每日一练0001
问题我们有一个包含N个元素的元组或序列,现在想把它分解为N个单独的变量。例如我们有一个序列[1, 2, 3],想把1, 2, 3分别赋值给a, b, c三个变量。解决方案只需要简单的赋值就可以了,唯一的要求是变量的数量和序列的数量必须要一致例如:>>> l = ['foo', 5, 'bar']>>> a, b, c = l&...原创 2018-03-22 13:31:34 · 596 阅读 · 0 评论 -
Python每日一练0009
问题怎样找出一个序列中出现次数最多的元素?解决方案使用collections库中的Counter对象可以方便的求出现次数最多的前N个元素直接使用most_common成员函数就好了,例如:from collections import Counterwords = [ 'look', 'into', 'my', 'eyes', 'look', 'into', ...原创 2018-03-29 11:28:23 · 198 阅读 · 0 评论 -
Python每日一练0012
问题如何获取本机内网或外网IP?解决方案获取内网IP:def get_host_ip(): with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s: s.connect(('8.8.8.8', 80)) return s.getsockname()[0]获取外网IP:...原创 2018-04-04 23:14:56 · 226 阅读 · 0 评论 -
Python每日一练0021
问题如何像操作文件一样操作str或bytes类似于C++中的stringstream解决方案使用io模块中的StringIO和BytesIO调用他们的构造函数得到一个io对象>>> import io>>> sio = io.StringIO()>>> bio = io.BytesIO()然后就可以像文件...原创 2018-04-18 10:52:07 · 173 阅读 · 0 评论 -
Python每日一练0017
问题你有一些长字符串,想以指定的列宽将它们重新格式化。解决方案使用textwrap模块的fill或wrap函数假设有一个很长的字符串s = "Look into my eyes, look into my eyes, the eyes, the eyes, \the eyes, not around the eyes, don't look around the ey...原创 2018-04-12 23:15:16 · 163 阅读 · 0 评论 -
Python每日一练0013
问题现在有多个字典或者映射,你想将它们从逻辑上合并为一个单一的映射后执行某些操作, 比如查找值或者检查某些键是否存在。解决方案使用collections库的ChainMap类,可以快速的将多个dict合并在一起>>> from collections import ChainMap>>> a = {'x': 1, 'z': 3 }&g...原创 2018-04-06 23:14:23 · 110 阅读 · 0 评论 -
Python每日一练0018
问题你需要对浮点数执行精确的计算操作,并且不希望有任何小误差的出现。Python的float类型是存在误差的>>> a = 1.1>>> b = 2.2>>> a + b == 3.3False>>> a + b3.3000000000000003解决方案使用decimal模块,但要注意参...原创 2018-04-13 22:34:07 · 1312 阅读 · 0 评论 -
Python每日一练0019
问题Python中如何将int在十进制和二、八、十六进制之间互相转换解决方案十进制向二、八、十六进制转换分别使用bin、oct、hex>>> a = 123>>> bin(a)'0b1111011'>>> oct(a)'0o173'>>> hex(a)'0x7b'这样转换会有一个前缀...原创 2018-04-14 10:30:40 · 142 阅读 · 0 评论 -
Python每日一练0022
问题你想在一个文件里每次读入固定大小的字节,比如每次读入4个字节并转成int,或者每次读入x个字节并进行结构化,例如:l = [5, 2, 4, 1, 2, 4, 5, 6, 8]with open('test', 'wb') as fd: for num in l: fd.write(num.to_bytes(4, 'big'))解决方案可以简单...原创 2018-04-19 23:25:09 · 153 阅读 · 0 评论 -
Python中鲜为人知的特性(一)
问题Python中鲜为人知的特性(一)讨论函数参数unpackdef foo(x, y): print x, yalist = [1, 2]adict = {'x': 1, 'y': 2}foo(*alist) # 1, 2foo(**adict) # 1, 2链式比较操作符>>> x = 3>>> ...原创 2018-05-02 13:50:43 · 172 阅读 · 0 评论 -
Python每日一练0023
问题如何判断一个文件是否存在解决方案这个问题可以分成几类问题如果这里的文件指的是文件或目录,我们可以用os.path.exists()方法>>> import os>>> os.path.exists('test')True如果这里的文件指的是普通的文件,我们可以用os.path.isfile()方法>>&...原创 2018-04-20 23:15:19 · 162 阅读 · 0 评论 -
Python每日一练0016
问题你想去掉文本字符串开头,结尾或者中间不想要的字符,比如空白。解决方案对于简单的文本替换,我们可以使用[lr]strip和replacestrip() 方法能用于删除开始或结尾的字符。 lstrip() 和 rstrip() 分别从左和从右执行删除操作。 默认情况下,这些方法会去除空白字符,但是你也可以指定其他字符集合。>>> ' spaciou...原创 2018-04-11 14:51:43 · 283 阅读 · 0 评论 -
Python每日一练0015
问题如何比较两个字面一样,但字节不一样的字符串例如:>>> a = u'\u4eba\u53e3\u3058\u3093\u3053\u3046\u306b\u81be\u7099\u304b\u3044\u3057\u3083\u3059\u308b'>>> b = u'\u4eba\u53e3\u3058\u3093\u3053\u3046...原创 2018-04-10 22:13:16 · 117 阅读 · 0 评论 -
Python每日一练0020
问题你需要执行简单的日期操作,计算两个日期间隔多少天、某个日期后的多少天是几月几日、转换时间字符串的格式等解决方案使用datetime库中的datetime和timedelta类其中datetime类代表一个日期 + 时间,例如2018年4月16日11点00分00秒;timedelta类代表一个日期间隔对于datetime实例,可以直接进行-数学运算得到一个timedelt...原创 2018-04-16 13:50:32 · 217 阅读 · 0 评论 -
Python每日一练0002
问题如何序列化输出元素包含字符串元组的字符串元组(好绕)举个例子>>> zoo1 = ('monkey', 'elephant')>>> zoo2 = ('python', zoo1)将zoo2输出为python, monkey, elephant解决方案容易想到使用join()函数,但join()函数要求元素必须都是字符串类型...原创 2018-03-22 13:32:18 · 296 阅读 · 0 评论 -
Python每日一练0003
问题在每日一练0001中介绍了如何unpack一个可迭代对象,使用,运算符即可但往往我们遇到的问题是可迭代对象中的数量是不确定的这个时候该如何拿到我们想要的元素,比如我们只需要可迭代对象的第一个或者最后一个元素而已解决方案使用Python中的*运算符例如我们需要拿到一个元组的第一个和最后一个元素>>> zoo = ('monkey', 'cam...原创 2018-03-22 13:32:38 · 167 阅读 · 0 评论 -
Python每日一练0004
问题如何保存迭代对象的最后N个元素例如保存列表['a', 'b', 'c', 'd']的最后2个元素或者保存某个迭代器对象的最后5个元素解决方案对于列表、元组这样的数据结构,可以使用切片来很方便的实现,例如保存列表l的最后3个元素就可以直接l[-3:]但有些时候,我们操作的可迭代对象不能使用切片这个时候可以使用collections库里的deque(双端队列)数据结...原创 2018-03-22 13:33:04 · 254 阅读 · 0 评论 -
Python每日一练0005
问题如何对一个元素是列表的列表进行排序,排序规则是:首先按长度排序,其次按列表的字典序进行排序一个例子:list1 = [[0, 4, 1, 5], [3, 1, 5], [4, 0, 1, 5]]排序后为list1 = [[3, 1, 5], [0, 4, 1, 5], [4, 0, 1, 5]]另一个例子:list2 = [[4, 5, 2], [2, 5, 4], [2,...原创 2018-03-23 13:48:42 · 197 阅读 · 0 评论 -
Python每日一练0006
问题在某个集合中找到最大或最小的N个元素解决方案使用heapq模块 heapq.nlargest(n, iterable, key=None) heapq.nsmallest(n, iterable, key=None)例如:>>> import heapq>>> l = [9, -2, 0, 8, 1, 3]...原创 2018-03-25 20:34:48 · 191 阅读 · 0 评论 -
Python每日一练0007
问题怎样实现一个键对应多个值的字典(也叫 multidict)?例如:d = { 'a' : [1, 2, 3], 'b' : [4, 5]}e = { 'a' : {1, 2, 3}, 'b' : {4, 5}}解决方案使用collections模块中的defaultdict类defaultdict的特点是,当key不存在时,...原创 2018-03-26 16:06:59 · 175 阅读 · 0 评论 -
Python每日一练0014
问题你想使用 Unix Shell 中常用的通配符(比如 *.py , Dat[0-9]*.csv 等)去匹配文本字符串解决方案使用fnmatch模块的fnmatch或fnmatchcase函数>>> import fnmatch>>> print(fnmatch.fnmatch('hello.py', '*.py'))True&g...原创 2018-04-09 14:22:36 · 105 阅读 · 0 评论 -
Python每日一练0010
问题你有一个字典或者实例的序列,然后你想根据某个特定的字段来分组迭代访问。解决方案使用itertools.groupby() 函数假设有下列的字典列表:rows = [ {'address': '5412 N CLARK', 'date': '07/01/2012'}, {'address': '5148 N CLARK', 'date': '07/04...原创 2018-04-02 13:04:46 · 363 阅读 · 0 评论 -
Python每日一练0008
问题怎样在两个字典中寻寻找相同点(比如相同的键、相同的值等等)?解决方案直接对keys()或者items()使用集合操作,比如-(差)、|(并)、&(交)考虑下面两个字典:a = { 'x': 1, 'y': 2, 'z': 3,}b = { 'w': 10, 'x': 11, 'y': 2,}要找到相同...原创 2018-03-28 11:04:24 · 171 阅读 · 0 评论 -
Python每日一练0011
问题你有一段通过下标访问列表或者元组中元素的代码,但是这样有时候会使得你的代码难以阅读, 于是你想通过名称来访问元素。解决方案使用collections.namedtuple 函数,例如我们经常使用一个tuple表示一个坐标点的时候>>> from collections import namedtuple>>> Point = nam...原创 2018-04-03 14:51:01 · 138 阅读 · 0 评论 -
Python每日一练0030
问题如何判断一个list包含另一个list例如我有两个listList1 = ['a','c','c']List2 = ['x','b','a','x','c','y','c']如何判断list2包含了list1解决方案如果元素的数量不重要,也就是说只判断list1里的所有种类在list2都有出现过,那么使用set()即可>>> List...原创 2018-05-09 22:20:16 · 270 阅读 · 0 评论