Python列表迭代

Sea*_*ean 2 python iteration list

所以我有一个高度列表:

heights = [1, 2, 3, 5, 7, 8, 8, 13]
Run Code Online (Sandbox Code Playgroud)

并且我使用此函数将每个高度整数值及其索引存储在名为Node的类中的列表中.

def initializeNodes(heights):
    ans = []
    for height in heights:
        ans.append(Node(heights.index(height), height))
    return ans
Run Code Online (Sandbox Code Playgroud)

但我的问题是,因为它们是列表中的两个8,它在列表中给它们两个相同的前8个位置:

0 1
1 2
2 3
3 5
4 7
5 8
5 8
7 13
Run Code Online (Sandbox Code Playgroud)

我怎么能绕过这个?谢谢!

Mar*_*ers 6

使用enumerate()生成指数:

def initializeNodes(heights):
    ans = []
    for i, height in enumerate(heights):
        ans.append(Node(i, height))
    return ans
Run Code Online (Sandbox Code Playgroud)

您可以使用列表推导将四行折叠为1:

def initializeNodes(heights):
    return [Node(i, height) for i, height in enumerate(heights)]
Run Code Online (Sandbox Code Playgroud)