编写函数并返回函数中的所有值以进行枚举

时间:2018-10-19 01:55:35

标签: python

我希望函数返回循环的所有索引和值:

代码:

a = [["one"], ["two"], ["three"], ["four"]]

def count(a):
    for i, x in enumerate(a):
        return i,x
aa = count(a)
print(aa)

输出:

(0, ['one'])

预期输出:

(0 ['one'])
(1 ['two'])
(2 ['three'])
(3 ['four'])

2 个答案:

答案 0 :(得分:1)

您只获得第一项,因为您是第一次循环时返回。尝试这样的事情。根据需要对其进行修改。

a = [["one"], ["two"], ["three"], ["four"]]

def count(a):
    output_str = ""
    for i, x in enumerate(a):
        output_str += str(i) + "," + str(x) + "\n"
    return output_str

aa = count(a)
print(aa)

输出

0,['one']                                                                                                                                                                          
1,['two']                                                                                                                                                                          
2,['three']                                                                                                                                                                        
3,['four']    

作为@C。 Yduqoli建议,可以使用yield完成此操作。但是会涉及一个额外的步骤,例如:

a = [["one"], ["two"], ["three"], ["four"]]

def count(a):
    for i, x in enumerate(a):
        yield i,x

aa = count(a)
for item in aa:
    print(item)

输出

(0, ['one'])                                                                                                                                                                       
(1, ['two'])                                                                                                                                                                       
(2, ['three'])                                                                                                                                                                     
(3, ['four'])  

答案 1 :(得分:0)

由于enumerate()返回的是iterable,而不是sequence,因此您可以通过sequence或{{1 }}。

list()

请注意,由于我们在此处打印tuple(),因此上述代码的输出与您期望的不完全相同。