gpt4 book ai didi

python - 如何在倒数第二项停止迭代迭代器?

转载 作者:行者123 更新时间:2023-11-28 21:49:07 24 4
gpt4 key购买 nike

在遍历迭代器时,我想避开最终项并停在倒数第二项 - 我该怎么做?

from itertools import product
from collections import namedtuple

param_list = []

Parameter = namedtuple("Parameter", ['bad', 'good'])
param1 = Parameter(["peanut", "gluten"], ["bacon", "pickle"])
param_list.append(param1)
param2 = Parameter([0], [1, 22])
param_list.append(param2)
param3 = Parameter([0, 1], [2, 3, 4, 9])
param_list.append(param3)
param4 = Parameter(["football"], ["running", "yoga"])
param_list.append(param4)

for prod in product(*param_list): # -- I want to skip the last product --
for sub_prod in product(*prod):
prod = [str(x) if type(x) is not str else x for x in sub_prod]
print ", ".join(prod)

注意-

  1. param_list 是可变长度列表。
  2. 如果它是一个列表而不是一个迭代器,我会使用 for prod in product_list[:-1] :
  3. 打印声明仅供引用。

最佳答案

要避免使用最后一项(但不能避免最后一项,这通常是不可能的),您可以这样做:

def skip_last(seq):
it = iter(seq)
p = next(it)
for n in it:
yield p
p = n

>>> print (''.join(skip_last('ABCDE')))
'ABCD'

这是一个生成器,它将遍历序列并生成除最后一项之外的所有项目。

关于python - 如何在倒数第二项停止迭代迭代器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33956580/

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