我有一个2项元组的列表,我想将它们转换为2个列表,其中第一个包含每个元组中的第一个项目,第二个列表包含第二个项目.
例如:
original = [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
# and I want to become...
result = (['a', 'b', 'c', 'd'], [1, 2, 3, 4])
Run Code Online (Sandbox Code Playgroud)
是否有内置函数可以做到这一点?
给定一个迭代器it,我想要一个函数it_count,它返回迭代器产生的元素数,而不会破坏迭代器.例如:
ita = iter([1, 2, 3])
print(it_count(ita))
print(it_count(ita))
Run Code Online (Sandbox Code Playgroud)
应该打印
3
3
Run Code Online (Sandbox Code Playgroud)
有人指出,对于所有迭代器来说,这可能不是一个明确定义的问题,所以我不是在寻找一个完全通用的解决方案,但它应该在给定的例子中按预期运行.
好的,让我进一步澄清我的具体案例.给出以下代码:
ita = iter([1, 2, 3])
itb, itc = itertools.tee(ita)
print(sum(1 for _ in itb))
print(sum(1 for _ in itc))
Run Code Online (Sandbox Code Playgroud)
...我们可以编写it_count上面描述的函数,以便它以这种方式运行吗?即使问题的答案是"无法做到",这仍然是一个完全有效的答案.它不会让问题变得糟糕.并且证明它是不可能的将远非微不足道的......