我在去年夏天學過C,使用K & R 2nd ed。我從1989年開始寫C語言。於是我決定採用CS50,現在我第一次學習python3。python索引複雜列表
我還決定在python3上在線上http://www.python-course.eu/python3_sequential_data_types.php。我在理解用於深度嵌套列表的pythons索引時遇到了一些麻煩。
我已經花了一段時間搜索發佈之前,但沒有看到答案。我在網上找到的例子是這樣的:
>>> t = [[100, 'str_1'], [200, 'str_2'], [300, 'str_3']]
我明白了。索引與C 2d char數組相同。
什麼是困惑我的是:
place= ["High up", ["further down", ["and down", ["deep down", "the answer", 42]]]]
>>> place[0]
'High up'
>>> place[1]
['further down', ['and down', ['deep down', 'the answer', 42]]]
>>> place[1][1]
['and down', ['deep down', 'the answer', 42]]
>>> place[1][1][1]
['deep down', 'the answer', 42]
>>> place[1][1][1][0]
'deep down'
>>> place[1][1][1][0][3]
'p'
我以爲我聽錯了,只是不停了一個,拿到下一張表,但後來我發現這一點。
>>> complex_list = [["a",["b",["c","x"]]],42]
complex_list[0] #note: index 0 is the entire left, while above it's not.*
['a', ['b', ['c', 'x']]]
>>> complex_list[0][1]
['b', ['c', 'x']]
>>> complex_list[0][1][1][0]
'c'
兩個列表看起來幾乎一樣對我來說,除了complex_list對左邊的兩個括號。 有人可以向我解釋規則,我不明白爲什麼地方[0]只是列表中的第一項,而complex_list [0]是整個列表,除了數字42?該額外大括號如何更改索引?
我認爲'complex_list'左邊的兩個大括號將容納第一個「內部列表」[「a」,[「b」,[「c」,「x」]]]'和單獨的項目'42',也許有時候在列表項之間放置空格時會更容易看到:'[[「a」,[「b」,[「c」,「x」]]],42]',這就像是說[[[只要大括號匹配(每個左括號'[''對應的右括號']']。 – davedwards
它不像'C'陣列那樣幾何。它實際上是指向對象的指針列表。所以每個'[]'通過另一個指針去引用。所以下一個'[]'需要在前面的解除引用的上下文中進行評估。 –