返回列表元素和索引

use*_*772 1 python

我试图使用用户制作的功能打印列表的所有元素.

y = [1,2,3]
def ash(list1):
for x in range(len(list)):
    return list[x],x
Run Code Online (Sandbox Code Playgroud)

我想要做的是返回列表中的所有值及其索引,但我得到的只是一个元素.我可以得到要打印但不返回的元素.

Roh*_*ain 5

您将在第一次迭代时返回.相反,您需要在函数中创建一个列表,并在该列表中添加所有元组,最后返回该列表.

要获得索引和元素,您可以使用enumerate():

def ash(list1):
    new_list = []
    for x, elem in enumerate(list1):
        new_list.append((elem,x))
    return new_list
Run Code Online (Sandbox Code Playgroud)

或者,更好的是你可以简单地使用List comprehension:

return [(elem, x) for x, elem in enumerate(list1)]
Run Code Online (Sandbox Code Playgroud)

前两种方法在内存中创建列表.如果你有一个非常大的列表要处理,那么你应该使用生成器,使用yield关键字:

def ash(list1):
    for x, elem in enumerate(list1):
        yield elem, x
Run Code Online (Sandbox Code Playgroud)

  • 这是一种可怕的方法. (2认同)