如果输入为
round_robin(range(5), "hello")
我需要输出为
[0, 'h', 1, 'e', 2, 'l', 3, 'l', 4, 'o']
我试过了
def round_robin(*seqs):
list1=[]
length=len(seqs)
list1= cycle(iter(items).__name__ for items in seqs)
while length:
try:
for x in list1:
yield x
except StopIteration:
length -= 1
pass
但是它给出了错误
AttributeError: 'listiterator' object has no attribute '__name__'
如何修改代码以获得所需的输出?
您可以在此处找到一系列迭代方法:http
:
//docs.python.org/2.7/library/itertools.html#recipes
from itertools import islice, cycle
def roundrobin(*iterables):
"roundrobin('ABC', 'D', 'EF') --> A D E B F C"
# Recipe credited to George Sakkis
pending = len(iterables)
nexts = cycle(iter(it).next for it in iterables)
while pending:
try:
for next in nexts:
yield next()
except StopIteration:
pending -= 1
nexts = cycle(islice(nexts, pending))
print list(roundrobin(range(5), "hello"))
编辑 :Python 3
https://docs.python.org/3/library/itertools.html#itertools-
recipes
def roundrobin(*iterables):
"roundrobin('ABC', 'D', 'EF') --> A D E B F C"
# Recipe credited to George Sakkis
num_active = len(iterables)
nexts = cycle(iter(it).__next__ for it in iterables)
while num_active:
try:
for next in nexts:
yield next()
except StopIteration:
num_active -= 1
nexts = cycle(islice(nexts, num_active))
print list(roundrobin(range(5), "hello"))
我在C语言课程考试前练习一些算法问题,我被这个问题卡住了(至少3个小时甚至4个小时),我不知道如何回答: 您有两个已排序的循环单链接列表,必须合并它们并返回新循环链接列表的标题,而不创建任何新的额外节点。返回的列表也应该进行排序。 节点结构为: 我尝试了很多方法(递归和非递归),但都没有解决问题。 谢谢你的帮助。
问题内容: 我有两个清单如下 我想提取物项从当他们在: 如何将两个循环写为单行列表理解? 问题答案: 应该这样做:
问题内容: 我正在编写一个脚本,该脚本记录来自另一个程序的错误,并在遇到错误时从中断的地方重新启动该程序。不管出于什么原因,该程序的开发人员都没有必要默认将此功能放入其程序中。 无论如何,程序都会获取一个输入文件,对其进行解析,然后创建一个输出文件。输入文件采用特定格式: 当程序引发错误时,它会为您提供跟踪错误所需的参考信息- 即UI,哪个部分(标题或摘要)以及相对于标题或摘要开头的行号。我想使用
问题内容: 我有两个列表,例如: 如何创建这些列表的所有排列,如下所示: 我可以用吗? 问题答案:
我想把两个列表合并成一个列表列表。反之亦然。我找不到任何工作,我对Python非常陌生 例子: 如何将S拆分回原来的S1和S2?示例:
问题内容: 我正在尝试使用for循环修改列表中的项目,但出现错误(请参见下文)。样例代码: 错误: 有什么办法解决这个问题? 问题答案: 尝试以下方法: 您遇到的基本问题是,当你写的,有是一个列表,则需要是一个整数,数字索引列表。但是在循环中 是列表中的实际事物,即字符串,而不是事物的数字索引。是一个迭代器,它生成数字而不是列表中的值,因此您可以使用它。 一个替代方案是 该函数为您提供了一个在表单