Python方法删除迭代

Deb*_*ski 5 python string iterator data-structures

假设我有一个函数可以将可迭代/迭代器或非可迭代作为参数.检查Iterability try: iter(arg).

根据输入是否是可迭代的,方法的结果将是不同的.不是当我想传递一个不可迭代的可迭代输入时,很容易做到:我只用一个元组包装它.

当我想传递一个iterable(例如一个字符串)但是希望函数将它视为不可迭代时,我该怎么办?例如,使iter(str)失败.

编辑 - 我的初衷:

我想概括一下这个zip函数,因为它可以用非迭代的方式压缩迭代.然后,非迭代repeat本身就像其他迭代没有完成一样频繁.

我现在唯一的解决方案似乎是,我不应该检查general_zip函数内部(因为字符串问题); 但是相反,我必须调用之前repeat迭代器添加到参数中.(这实际上使我免于发明函数 - 尽管我仍然可能因为使用非可迭代作为输入而没有额外的重复将是明确的.)zipgeneral_zip

Deb*_*ski 3

我想得越多,似乎如果不进行类型检查或向函数传递参数,就不可能做到\xe2\x80\x99。

\n\n

但是,根据函数的意图,处理它的一种方法可能是:

\n\n
from itertools import repeat\nfunc(repeat(string_iterable))\n
Run Code Online (Sandbox Code Playgroud)\n\n

func仍然看到一个可迭代的,但它不会\xe2\x80\x99t迭代字符串本身的字符。实际上,该参数的工作方式就好像它\xe2\x80\x99 是一个不可迭代的常量。

\n