所以我有一个高度表:

heights = [1, 2, 3, 5, 7, 8, 8, 13]

我使用这个函数将每个高度整数值及其索引存储在一个名为Node的类的列表中。
def initializeNodes(heights):
    ans = []
    for height in heights:
        ans.append(Node(heights.index(height), height))
    return ans

但我的问题是,因为他们是名单上的两个8,这给了他们两个相同的前8个位置,即名单上的5:
0 1
1 2
2 3
3 5
4 7
5 8
5 8
7 13

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

最佳答案

使用enumerate()生成索引:

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

您可以使用列表理解将四行折叠为1:
def initializeNodes(heights):
    return [Node(i, height) for i, height in enumerate(heights)]

关于python - Python列表迭代,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17573949/

10-09 18:56