我有以下代码:
import itertools
x = ['Lebron' 'James']
y = ['is', 'the', 'goat']
z = ['is', 'not', 'the', 'goat']
itertools.chain(x, y)
并且我得到以下输出:itertools.chain at 0x104baab50
此输出是什么意思?以及如何查看该方法的结果?
然后下面的代码相同:
itertools.chain.from_iterable([x,y])
我得到以下输出:itertools.chain at 0x104af7550
这是什么意思?以及如何查看该方法的实际结果?我不太确定这两种方法之间有什么区别。
[itertools.chain
返回一个迭代器,该迭代器将允许您通过for
等在__next__
循环中迭代这些值。
例如:
like a regular Python iterator
和In [3]: import itertools
...: x = ['Lebron', 'James']
...: y = ['is', 'the', 'goat']
...: z = ['is', 'not', 'the', 'goat']
In [4]: for thing in x:
...: print('Thing is', thing)
...:
Thing is Lebron
Thing is James
In [5]: for thing in itertools.chain(x, y):
...: print('Thing is', thing)
...:
Thing is Lebron
Thing is James
Thing is is
Thing is the
Thing is goat
获取可迭代项(例如其他列表)的可迭代项(例如列表),然后依次迭代每个迭代项:
from_iterable
简单地说,In [8]: for thing in itertools.chain.from_iterable([x, y]):
...: print('Thing is', thing)
...:
Thing is Lebron
Thing is James
Thing is is
Thing is the
Thing is goat
不是函数;这是一个类型。像大多数类型一样,您在调用该类型的实例时会找回它。实例chain
是可迭代的;它首先从chain(x,y)
中产生元素,当它用尽x
时,它从x
中产生元素。
y
是一个类方法;它的定义实际上与
chain.from_iterable
假设您可以将def from_iterable(itr):
return chain(*itr)
与任意迭代一起使用。
您应该在*
中看到有关itertools
模块的更多信息。
此输出是什么意思?以及如何查看该方法的结果?
返回一个Python Docs对象。这是一个发电机。您可以通过这种方式查看结果(例如,使用itertools.chain
循环遍历值):
for
或以此方式(从此迭代列表中列出):
for item in itertools.chain(x, y):
print(item)
itertools.chain(* iterables)
这里您要传递several迭代器,以直接从函数参数中创建链:
print(list(itertools.chain(x, y)))
itertools.chain.from_iterable(iterable)
并且在这里,您传递一个single迭代器,该迭代器包含其他迭代器,用于从以下位置创建链:
itertools.chain(x, y)