草庐IT

any_iterator

全部标签

python - Python `list.extend(iterator)` 保证是惰性的吗?

总结假设我有一个iterator,当从中消耗元素时,它会执行一些副作用,例如修改列表。如果我定义一个列表l并调用l.extend(iterator),是否保证extend会将元素推送到l一个接一个,因为迭代器中的元素被消耗,而不是保存在缓冲区中然后一次全部推送?我的实验我在我的计算机上用Python3.7做了一个快速测试,根据该测试,list.extend似乎很懒惰。(请参阅下面的代码。)规范是否保证了这一点?如果是,规范中的何处提到了这一点?(此外,请随时批评我并说“这不是Pythonic,你这个傻瓜!”——尽管如果你想批评我也能回答这个问题,我将不胜感激。我问的部分原因出于我自己的

python - 为什么打开这个 map 对象会打印 "must be an iterable, not map"?

这是怎么回事?>>>list(map(lambda*x:x,*map(None,'abc')))Traceback(mostrecentcalllast):File"",line1,inlist(map(lambda*x:x,*map(None,'abc')))TypeError:typeobjectargumentafter*mustbeaniterable,notmap忽略代码的无意义。这是关于错误信息,“iterable,notmap”。map是可迭代的,不是吗?如果我只将None替换为str,则整个过程都正常:>>>list(map(lambda*x:x,*map(str,'a

python - "sorted 1-d iterator"基于 "2-d iterator"(迭代器的笛卡尔积)

我正在寻找一种在Python中执行此操作的简洁方法:假设我有两个迭代器“iter1”和“iter2”:可能是素数生成器和itertools.count()。我先验地知道两者都是无限的并且单调递增。现在我想对两个参数“op”(可能是operator.add或operator.mul)进行一些简单的操作,并用everyelement计算第一个迭代器的everyelement接下来,使用所述操作,然后一次生成一个,排序。显然,这本身就是一个无限序列。(正如@RyanThompson在评论中提到的:这将被称为这些序列的CartesianProduct...或者,更确切地说,该产品的一维排序。)

python - SQLAlchemy 过滤器查询 "column LIKE ANY (array)"

嗨,SQLAlchemy专家们,这里有一个棘手的问题:我正在尝试编写一个解析为类似内容的查询:SELECT*FROMMyTablewheremy_columnLIKEANY(array['a%','b%'])使用SQLAlchemy:foo=['a%','b%']#thisworks,butisdirtyandsillyDBSession().query(MyTable).filter("my_columnLIKEANY(array["+",".join(["'"+f+"'"forfintoken.tree_filters])+"])")#somethinglikethisshould

iterator - 在 python 中快速迭代可迭代对象(不是列表)的前 n 项

我正在寻找一种pythonic方法来迭代可迭代项的第一个n项(upd:在常见情况下不是列表,至于列表,事情是琐碎的),并且尽可能快地执行此操作非常重要。这就是我现在的做法:count=0foriteminiterable:do_something(item)count+=1ifcount>=n:break对我来说似乎不太整洁。另一种方法是:foriteminitertools.islice(iterable,n):do_something(item)这看起来不错,问题是它是否足够快,可以与某些生成器一起使用?例如:pair_generator=lambdaiterable:iterto

python - Pandas bool 值 .any() .all()

我一直收到ValueError:ThetruthvalueofaSeriesisambiguous.使用pandas进行bool测试时使用a.empty、a.bool()、a.item()、a.any()或a.all().。不明白它说的是什么,我决定试着弄明白。然而,我现在完全糊涂了。我在这里创建了一个包含两个变量的数据框,它们之间共享一个数据点(3):In[75]:importpandasaspddf=pd.DataFrame()df['x']=[1,2,3]df['y']=[3,4,5]现在我尝试所有(是x小于y),我将其翻译为“是否所有x小于y的值”,我得到一个没有意义的答案。I

python - 在python中模拟文件对象或iterables

哪种方式适合模拟和测试由open()返回的迭代对象的代码,使用mock图书馆?whitelist_data.py:WHITELIST_FILE="testdata.txt"format_str=lambdas:s.rstrip().lstrip('www.')whitelist=Nonewithopen(WHITELIST_FILE)aswhitelist_data:whitelist=set(format_str(line)forlineinwhitelist_data)ifnotwhitelist:raiseRuntimeError("Can'treaddatafrom%sfile

python - 类型检查 : an iterable type that is not a string

为了更好地解释,考虑这个简单的类型检查器函数:fromcollectionsimportIterabledeftypecheck(obj):returnnotisinstance(obj,str)andisinstance(obj,Iterable)如果obj是str以外的可迭代类型,则返回True。但是,如果obj是str或不可迭代类型,则返回False。有什么方法可以更有效地执行类型检查?我的意思是,检查一次obj的类型以查看它是否不是str然后再次检查以查看它似乎有点多余如果它是可迭代的。我想像这样列出除str之外的所有其他可迭代类型:returnisinstance(obj,(

python - 类型检查 : an iterable type that is not a string

为了更好地解释,考虑这个简单的类型检查器函数:fromcollectionsimportIterabledeftypecheck(obj):returnnotisinstance(obj,str)andisinstance(obj,Iterable)如果obj是str以外的可迭代类型,则返回True。但是,如果obj是str或不可迭代类型,则返回False。有什么方法可以更有效地执行类型检查?我的意思是,检查一次obj的类型以查看它是否不是str然后再次检查以查看它似乎有点多余如果它是可迭代的。我想像这样列出除str之外的所有其他可迭代类型:returnisinstance(obj,(

javascript - JavaScript 中的 Python any() 和 all() 函数等价于什么?

Python内置函数any()和all(),它们应用于列表(JavaScript中的数组),如下所示-any():如果iterable的任何元素为真,则返回True。如果可迭代对象为空,则返回False。all():如果iterable的所有元素都为真(或者iterable为空),则返回True。我们可以为上面的内容创建自定义函数,但是如果JavaScript中有任何等效的内置函数可用,请告诉我。 最佳答案 Pythondocumentation为您提供这两个函数的纯Python等价物;它们很容易翻译成JavaScript:func