相关疑难解决方法(0)


确保一个参数可以迭代两次

假设我有以下函数:

def print_twice(x):
    for i in x: print(i)
    for i in x: print(i)
Run Code Online (Sandbox Code Playgroud)

当我跑步时:

print_twice([1,2,3])
Run Code Online (Sandbox Code Playgroud)

或者:

print_twice((1,2,3))
Run Code Online (Sandbox Code Playgroud)

我得到了预期的结果:数字 1,2,3 被打印两次。

但是当我跑步时:

print_twice(zip([1,2,3],[4,5,6]))
Run Code Online (Sandbox Code Playgroud)

(1,4),(2,5),(3,6) 对仅打印一次。可能这是因为zip返回一个在一次传递后终止的生成器。

如何修改该函数print_twice以使其正确处理所有输入?

我可以在函数的开头插入一行:x = list(x)。但如果 x 已经是列表、元组、范围或任何其他可以迭代多次的迭代器,这可能会效率低下。有更有效的解决方案吗?

python

8
推荐指数
2
解决办法
410
查看次数

标签 统计

python ×2

hidden-features ×1