跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • tee 函数类似于我们熟知的细胞分裂
未分類
18 1 月 2021

tee 函数类似于我们熟知的细胞分裂

tee 函数类似于我们熟知的细胞分裂

資深大佬 : fanqieipnet 5

tee 函数类似于我们熟知的细胞分裂。具体是怎么回事呢?今天番茄加速就来说一下。

   tee 函数类似于我们熟知的细胞分裂,它能复制原迭代器 n 个,原型如下:

   tee(iterable, n=2)

  应用如下,可以看出复制出的两个迭代器是独立的

   a = tee([1,4,6,4,1],2)

   In [51]: next(a[0])

   Out[51]: 1

   In [52]: next(a[1])

   Out[52]: 1

  实现它的代码大概如下:

   def tee(iterable, n=2):

   it = iter(iterable)

   deques = [collections.deque() for i in range(n)]

   def gen(mydeque):

   while True:

   if not mydeque:

   try:

   newval = next(it)

   except StopIteration:

   return

   for d in deques:

   d.append(newval)

   yield mydeque.popleft()

   return tuple(gen(d) for d in deques)

   tee 实现内部使用一个队列类型 deques,起初生成空队列,向复制出来的每个队列中添加元素 newval, 同时 yield 当前被调用的 mydeque 中的最左元素。

   map 变体

   starmap 可以看做是 map 的变体,它能更加节省内存,同时 iterable 的元素必须也为可迭代对象,原型如下:

   starmap(function, iterable)

  应用它:

   In [63]: list(starmap(lambda x,y: str(x)+’-‘+str(y), [(‘a’,1),(‘b’,2),(‘c’,3)]))

   Out[63]: [‘a-1’, ‘b-2’, ‘c-3’]

   starmap 的实现细节如下:

   def starmap(function, iterable):

   for args in iterable:

   yield function(*args)

大佬有話說 (0)

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具