الفرق بين المراجعتين لصفحة: «Python/itertools/tee»
إضافة الصّفحة |
ط ←مصادر |
||
(مراجعتان متوسطتان بواسطة مستخدمين اثنين آخرين غير معروضتين) | |||
سطر 46: | سطر 46: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
ستُساعد الشّيفرة أعلاه على توضيح ما تقوم به الدّالة (رغم أنّ التّطبيق الفعليّ أكثر تعقيدًا ويستخدم طابور FIFO واحدًا فقط). | ستُساعد الشّيفرة أعلاه على توضيح ما تقوم به الدّالة (رغم أنّ التّطبيق الفعليّ أكثر تعقيدًا ويستخدم طابور FIFO واحدًا فقط). | ||
* حالما تقسم الدّالة <code>itertools.tee()</code> مُكرّرًا فلا يجب استخدام الكائن القابل للتّكرار في أي مكان آخر، وإلّا قد يتقدّم دون إعلام كائنات <code>itertools.tee()</code>. | * حالما تقسم الدّالة <code>itertools.tee()</code> مُكرّرًا فلا يجب استخدام الكائن القابل للتّكرار الأصليّ في أي مكان آخر، وإلّا قد يتقدّم دون إعلام كائنات <code>itertools.tee()</code>. | ||
* قد تحتاج هذه الدّالة إلى ذاكرة كبيرة حسب حجم البيانات المؤقّتة التي ستحتاج إلى تخزينها. إن كان مُكرّرٌ يستخدم مُعظم أو كلّ البيانات قبل أن يبدأ مُكرّر آخر، فاستخدام الدّالة [[Python/list| | * قد تحتاج هذه الدّالة إلى ذاكرة كبيرة حسب حجم البيانات المؤقّتة التي ستحتاج إلى تخزينها. إن كان مُكرّرٌ يستخدم مُعظم أو كلّ البيانات قبل أن يبدأ مُكرّر آخر، فاستخدام الدّالة [[Python/list|<code>list()</code>]] أسرع من الدّالة <code>itertools.tee()</code>. | ||
== انظر أيضًا == | == انظر أيضًا == | ||
* [[Python/iterators|المكرِّرات Iterators في بايثون]]. | * [[Python/iterators|المكرِّرات Iterators في بايثون]]. | ||
* [[Python/generators|المولدات Generators في بايثون]]. | * [[Python/generators|المولدات Generators في بايثون]]. | ||
* [[Python/list| | * الدالة <code>[[Python/list|list()]]</code>: تُحوّل كائنًا قابلًا للتّكرار إلى قائمة. | ||
== مصادر == | == مصادر == | ||
سطر 58: | سطر 58: | ||
[[تصنيف:Python]] | [[تصنيف:Python]] | ||
[[تصنيف:Python Function]] | [[تصنيف:Python Function]] | ||
[[تصنيف:Python itertools]] | [[تصنيف:Python itertools]] |
المراجعة الحالية بتاريخ 06:15، 19 يونيو 2018
تعيد الدّالة itertools.tee()
عددًا مُحدّدًا من المُكرّرات المُستقلّة عن بعضها البعض من كائن واحد قابل للتّكرار.
البنية العامة
itertools.tee(iterable, n=2)
المعاملات
iterable
الكائن القابل للتّكرار.
n
عدد المُكرّرات المُستقلّة المرغوب إنشاؤها من الكائن iterable
.
القيمة المعادة
عددٌ n
من المُكرّرات المُستقلّة المُولَّدة من الكائن القابل للتّكرار المُعطى.
أمثلة
المثال التّالي يوضّح كيفيّة عمل هذه الدّالة:
>>> it = itertools.tee('abc', 2)
>>> it
(<itertools._tee object at 0x7f79c6fc9f48>, <itertools._tee object at 0x7f79c4e73588>)
>>> [list(i) for i in it]
[['a', 'b', 'c'], ['a', 'b', 'c']]
ملاحظات
- الدّالة مُكافئة لما يلي:
def tee(iterable, n=2):
it = iter(iterable)
deques = [collections.deque() for i in range(n)]
def gen(mydeque):
while True:
if not mydeque: # when the local deque is empty
try:
newval = next(it) # fetch a new value and
except StopIteration:
return
for d in deques: # load it to all the deques
d.append(newval)
yield mydeque.popleft()
return tuple(gen(d) for d in deques)
ستُساعد الشّيفرة أعلاه على توضيح ما تقوم به الدّالة (رغم أنّ التّطبيق الفعليّ أكثر تعقيدًا ويستخدم طابور FIFO واحدًا فقط).
- حالما تقسم الدّالة
itertools.tee()
مُكرّرًا فلا يجب استخدام الكائن القابل للتّكرار الأصليّ في أي مكان آخر، وإلّا قد يتقدّم دون إعلام كائناتitertools.tee()
. - قد تحتاج هذه الدّالة إلى ذاكرة كبيرة حسب حجم البيانات المؤقّتة التي ستحتاج إلى تخزينها. إن كان مُكرّرٌ يستخدم مُعظم أو كلّ البيانات قبل أن يبدأ مُكرّر آخر، فاستخدام الدّالة
list()
أسرع من الدّالةitertools.tee()
.
انظر أيضًا
- المكرِّرات Iterators في بايثون.
- المولدات Generators في بايثون.
- الدالة
list()
: تُحوّل كائنًا قابلًا للتّكرار إلى قائمة.