gpt4 book ai didi

python - 在使用对 iter 和 while 的调用时,如何将字符串的最后 x 个字符作为 python 生成器删除?

转载 作者:太空宇宙 更新时间:2023-11-04 00:09:09 24 4
gpt4 key购买 nike

我在编写一个生成器函数时遇到问题,该函数接受一个可迭代的和一个整数 x 的另一个参数。它输出除最后一个 x 值之外的所有值。它不知道如何计算可迭代输出的值有多少。

我不知道如何使用 while 循环和 iter 来做到这一点。我还需要使用创建列表的理解,最多存储 x 值。

假设我们调用:

for i in func_function(“abcdefghijk”,5):
print(i,end =”)

它应该打印abcdef

这是我尝试过的:

def func_function(iterable, x):
while True:
l = []
for x in iter(iterable):
if len(x) == x:
yield x

最佳答案

诀窍是将其从前瞻性转变为后视性。

我会通过遍历输入并维护一个包含最新 n 元素的窗口来做到这一点:

def except_last_n(iterable, n):
last_n = []
for val in iterable:
last_n.append(val)
if len(last_n) > n:
yield last_n.pop(0)

for val in except_last_n(range(10), 3):
print(val)

将其重写为 while 循环和 iter 留给读者作为练习。

def except_last_n(iterable, n):
last_n = [val for val in iterable]
if len(last_n) > n:
yield last_n.pop(0)

关于python - 在使用对 iter 和 while 的调用时,如何将字符串的最后 x 个字符作为 python 生成器删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53077566/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com