本篇文章给大家谈谈如何获取所有Python标准库模块的列表,以及查询python标准库的知识点,同时本文还将给你拓展python–从5行中的列表列表中获取所有元素、Python标准库---random
本篇文章给大家谈谈如何获取所有Python标准库模块的列表,以及查询python标准库的知识点,同时本文还将给你拓展python – 从5行中的列表列表中获取所有元素、Python标准库---random模块的使用、python标准库--collections模块、python标准库--contextlib模块等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:- 如何获取所有Python标准库模块的列表(查询python标准库)
- python – 从5行中的列表列表中获取所有元素
- Python标准库---random模块的使用
- python标准库--collections模块
- python标准库--contextlib模块
如何获取所有Python标准库模块的列表(查询python标准库)
sys.builtin_module_names
除了标准库,我想要类似的东西。其他无效的东西:
sys.modules
-仅显示已加载的模块sys.prefix
-包含非标准库模块EDIT的路径,并且似乎在virtualenv中不起作用。
我想要此列表的原因是可以将其传递给http://docs.python.org/library/trace.html的--ignore-module
或--ignore-dir
命令行选项trace
因此,最终,我想知道在使用trace
或时如何忽略所有标准库模块sys.settrace
。
编辑:我希望它在virtualenv内部工作。http://pypi.python.org/pypi/virtualenv
EDIT2:我希望它适用于所有环境(例如,跨操作系统,在virtualenv内部和外部)。
答案1
小编典典为什么不自己解决标准库的组成部分呢?
import distutils.sysconfig as sysconfigimport osstd_lib = sysconfig.get_python_lib(standard_lib=True)for top, dirs, files in os.walk(std_lib): for nm in files: if nm != ''__init__.py'' and nm[-3:] == ''.py'': print os.path.join(top, nm)[len(std_lib)+1:-3].replace(os.sep, ''.'')
给
abcaifcantigravity--- a bunch of other files ----xml.parsers.expatxml.sax.expatreaderxml.sax.handlerxml.sax.saxutilsxml.sax.xmlreaderxml.sax._exceptions
编辑: 您可能需要添加检查,以避免site-packages
需要避免使用非标准库模块。
python – 从5行中的列表列表中获取所有元素
x = [['#','#','#'],['#','0',' ','#']]
假设我需要将其分成3行字符串,我该怎么做?
这是我如何做到这一点,但它不可扩展,说我有更多的列表,然后我将不得不写出这么多的打印声明.我想到了一个声明
print "".join(mlist[0]) print "".join(mlist[1]) print "".join(mlist[2])
我在想这样的东西,但它不起作用
zert = "" total = 0 for a in mlist: for b in a: if total < 6: print zert total = 0 zert = '' zert += b total += 1
^上面的问题是我需要保存第一个,然后迭代它,但只是检查是否没有内置函数?我试过”.join(mlist),但是它确实有效,因为它列表中的列表?
有更简单的方法吗?
解决方法
print '\n'.join([''.join(inner) for inner in mlist])
list comprehension创建每个嵌套列表的字符串,然后我们将新的行列表连接到带有换行符的更大字符串中.
演示:
>>> mlist = [['#','#']] >>> print '\n'.join([''.join(inner) for inner in mlist]) ##### #0 # ### #
您也可以使用for循环:
for inner in mlist: print ''.join(inner)
Python标准库---random模块的使用
更新时间:2019.09.11
1. 谈谈随机数:
??我们经常会用到随机数,对它也并不陌生。但是谈到如何使用计算机来生成随机数的时候,我们便会发现,无论是多么先进的计算机都难以实现真正意义上完全随机的数。实际上,我们使用计算机生成的都是伪随机数。虽说是“伪”随机数,但也不能说它是假的随机数,而是应该归为有一定规律的随机数
??那为什么说这些计算机生成的数是“有规律”的呢
??如果我们固定随机数种子后,每次在同一台计算机得到的随机数都是一样的。而对于默认由系统时间戳得到的随机数种子,在短时间内生成大量随机数时也会出现不少重复。因此,如果我们想生成接近于真正意义上的随机上,就需要对随机数种子设置更多的参考指标。
2. random模块---用于生成各种分布的伪随机数
2.1 random.seed(a=None,version=2):
- 作用:设置随机数种子,
- 参数:第一个如果不指定就默认是当前的系统时间戳或者操作系统中提供的随机源,第二个参数是指所使用的种子版本(version),默认是版本2,可以将str、byte、bytearay等对象转为int并使用所有位。而版本1(旧)是用于str和byte生成更窄的种子范围。
- 例子:
2.2 random.random():
- 作用:获取区间[0,1)的一个浮点随机数
- 参数:不需要参数
- 例子:
2.3 random.randrange(start,stop[,step]):(其实就好像range一样
- 作用:在指定的范围里,随机抽取一个整数
- 参数:接收的都是整数,第一个是start,第二个是stop,第三个是步长step(可选)
- 例:
2.4 random.randint(a,b):
- 作用:从[a,b]中生成一个随机整数,等价于random.randrange(a,b+1)
- 参数:a表示起始范围,b表示终止范围
- 例:
2.5 random.uniform(a,b):
- 作用:获取区间[a,b)或者[a,b]的一个浮点随机数
- 参数:如果a > b,则获取的随机数是b<=N<=a,如果a < b,则获取的随机数是a<=N<=b
- tip:由于它是根据a+(b-a)*random.random(),并对结果进行舍入,所以可能包含边界b也可能不包含b
- 例:
2.6 random.sample(sep,k):
- 作用:用于样本抽样
- 参数:第一个是序列或者集合(像当总体较大时指定range()作为参数,即快又节省内存),第二个是用于指定选取几个样本,最后返回样本列表
- tip1:从总体序列或者集合中不放回地选取n个样本,其中样本数不能大于总体序列的长度
- tip2:如果序列中有包含重复的元素,这些元素都有机会入样
- 例:
2.7 random.choice(seq):
- 作用:从一个非空的序列中随机选择一个元素
- 参数:非空序列
- 例:
2.8 random.choices(seq,weights=None,*,cum_weights=None,k=1):
- 作用:可以对序列的元素给定权重(权重的个数要和序列的长度相同),并且选取多个元素,不给定时默认各个元素的权重是相等的
- 参数:第一个序列,第二三个是权重(可选),第四个是选择个数,最后返回的是一个列表
- tip1:权重的形式可以是相对权重weights(像[10,30,40,20])或者累计权重cum_weights(像[10,80,100])。但实际上在执行时,相对权重会转化为累计权重,因此直接使用累计权重可以节省工作量
- tip2:权重可以指定任何的数字形式(整数、浮点数、分数等)
- 例:
2.9 random.shuffle(sep):
- 作用:将可变序列元素的位置打乱
- 参数:要打乱位置的序列
- tip:如果想将不可变序列(像元组、字符串等)的元素位置打乱,可以使用random.sample(x,len(x))
- 例:
3. 其他补充资料:
实际上有许多中方法来计算随机数,像Python就是用梅森旋转法来计算的。
- 传送门:Python随机数的产生算法
python标准库--collections模块
collections模块简介
- collections是Python内建的一个集合模块,提供了许多有用的集合类。
- 使用:
import collections
collections模块方法
-
nametuple(typename, field_names, *, rename=False, defaults=None, module=None)
:- 描述:
nametuple()
是一个函数,它用来创建一个自定义的tuple
对象,并且规定了tuple
元素的个数,并可以用属性而不是索引来引用tuple
的某个元素。 - 参数说明:
- typename :返回的新元组名称。
- field_names :是一个像
[‘x’, ‘y’]
一样的字符串序列。
import collections # 创建一个可以使用属性名称而不是索引获取值的元组 point = collections.namedtuple('Point', ['x', 'y']) p = point(1, 2) # point()中的point为返回值point print(p.y)
- 描述:
-
deque([iterable[, maxlen]])
:- 描述:deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈。
- 参数说明:
- Iterable:可迭代序列
- maxlen:最大长度
import collections # 创建一个可以高效实现插入和删除操作的双向列表,适合用于队列和栈。 q = collections.deque([1,2,3,4,5,6]) q.append(7) # deque队列末尾添加数据 print(q) q.popleft() # deque最左边删除数据 print(q) q.appendleft(3) # deque最左边添加数据 print(q)
-
defaultdict([default_factory[, ...]])
:- 描述:返回一个新的类似字典的对象。使用
dict
时,如果引用的Key不存在,就会抛出KeyError
。如果希望key不存在时,返回一个默认值,就可以用defaultdict
- 参数:构造时,第一个参数用于为该属性提供初始值,默认为
None
。所有其他参数(包括关键字参数)都相当于传递给dict
的构造函数。
import collections # 使用dict时,如果引用的Key不存在,就会抛出KeyError。如果希望key不存在时,返回一个默认值,就可以用defaultdict: new_dict = collections.defaultdict(lambda :"N") print(new_dict['key']) # key不存在返回"N"
- 描述:返回一个新的类似字典的对象。使用
-
OrderedDict([items])
:OrderedDict
的Key会按照插入的顺序排列,不是Key本身排序。import collections d = collections.OrderedDict({'a':1,"b":2,"c":3}) print(d)
-
ChainMap(*maps))
:可以把一组dict
串起来并组成一个逻辑上的dict
。ChainMap
本身也是一个dict,但是查找的时候,会按照顺序在内部的dict依次查找。import collections d = collections.ChainMap({'a':1,"b":2,"c":3},{'d':1,"e":2}) print(d['d'])
-
Counter([iterable-or-mapping])
:一个 计数器是一个dict
的子类,用于计数可哈希对象。import collections d = collections.Counter(['a',1,"b",2,"c",3,3,4]) print(d[3]) # 计数器计数3出现的次数
python标准库--contextlib模块
contextlib模块简介
- contextlib模块:实现上下文管理。
- 在Python中实现上下文管理是使用with关键字,但是默认只能实现特定的上下文管理。
- 其时,只要正确的实现
__enter__()
和__exit__()
魔术方法,就可以实现上下文管理。
class Context:
def __init__(self,bookname):
self.bookname = bookname
def __enter__(self):
print("开始上文管理")
return self
def __exit__(self, exc_type, exc_val, exc_tb):
if exc_type:
print("Error")
else:
print("实现下文管理")
def query(self):
return print(self.bookname)
with Context('wzry') as c:
c.query()
contextlib模块的装饰器
- @contextmanager:简写上下文管理方式
import contextlib
class Context:
def __init__(self,bookname):
self.bookname = bookname
def query(self):
print(self.bookname)
@contextlib.contextmanager
def d_query(name):
print("实现上文管理")
c = Context(name)
yield c
print("实现下文管理")
with d_query('wzry') as c:
c.query()
关于如何获取所有Python标准库模块的列表和查询python标准库的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于python – 从5行中的列表列表中获取所有元素、Python标准库---random模块的使用、python标准库--collections模块、python标准库--contextlib模块等相关内容,可以在本站寻找。
本文标签: