从python中的另一个函数调用迭代器

2024-06-17 10:27:11 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个列表。 我想遍历每个列表中的每个索引,并在另一个func中使用它。 所以:

def func_a(self):
    for i in range(len(big_list)):
        current_list = big_list[i]
            for j in range(len(current_list):
                char_iter = iter(current_list)

def func_b(self):
    <<here i want to use the next char from iter>>
    <<how do i do it>>

我尝试过的事情:

  • 下一步(func)->;错误
  • 下一个(字符)->;最后一个字符

注: 我在课堂上写这个函数。你知道吗


Tags: ingtself列表forlendefrange
3条回答

不完全确定你在问什么。我理解这个问题,您希望func_a遍历所有嵌套列表中的所有元素,并使之成为其他函数(尤其是func_b)可以重用这些元素。你知道吗

在这种情况下,您应该遍历列表和yield字符,使func_a成为一个生成器函数。你知道吗

def func_a(self):
    for current_list in big_list:
        for char in current_list:
            yield char

然后可以在func_b中这样使用它

def func_b(self):
    for char in func_a():
        print char

或使用next

def func_b(self):
    gen = func_a()
    print next(gen)
    print next(gen)

这应该给你一个基本的想法。如果还不够的话,请澄清。你知道吗

big_list = [[1,2,3],[3,4]]

def func_a():
    for current_list in big_list:
        for value in current_list:
            yield value

y = func_a()


for x in y:
    print x
    if x>2:
        break

print 'broke'
for x in y:
    print x

您不应该使用基于索引的访问,如果您总是只是迭代,那么Python工作得最好,因为它允许延迟计算,以及处理流而不是随机访问容器。你知道吗

我建议使用发电机:

def g(big_list):
    # no need for complicated indexing
    for current_list in big_list:
        # again, no need for index-based access
        for char in current_list:
            yield char


for char in g(the_big_list):
    func_b(char)

相关问题 更多 >