Списки Python - Как это соединение сделано? - PullRequest
0 голосов
/ 03 марта 2011

Я читаю об алгоритмах в Python, но я также новичок в Python.

Мне просто нужно понять, как это делается:

a, b, c, d, e, f, g, h = range(8)
N = [
[b, c, d, e, f], # a
[c, e], # b
[d], # c
[e], # d
[f], # e
[c, g, h], # f
[f, h], # g
[f, g] # h
]
print(N[a])

--> Result: [1, 2, 3, 4, 5]

Как Python знает, чтоN [a] соответствуют [1, 2, 3, 4, 5]?

Ответы [ 5 ]

4 голосов
/ 03 марта 2011

Ну, в первой строке range(8), представляющий собой список с номерами от 0 до 7, распаковывается с 8 именами (переменными).Имя a имеет значение 0 тогда.Итак, N[a] на самом деле N[0] на самом деле [b, c, d, e, f] на самом деле [1, 2, 3, 4, 5].

2 голосов
/ 03 марта 2011

В первой строке задаются a=0, b=1, c=2 и т. Д. В следующих строках N задается список списков.Первый элемент в этом списке - [b, c, d, e, f], то есть [1, 2, 3, 4, 5], потому что это значения b, c, d, e и f.

В последней строке, к которой вы обращаетесь N[a]N[0], потому что a равно 0. А так как N[0] означает «первый элемент в N», и это [1, 2, 3, 4, 5], это то, что вы получаете.

2 голосов
/ 03 марта 2011

Вот две подсказки для вас:

  1. Выясните, какие значения присваиваются переменным от a до h.
  2. Подставьте соответствующие значения вместо имен переменныхв коде, чтобы увидеть, делает ли это вещи для вас яснее.
1 голос
/ 03 марта 2011

Вы знакомы с массивами?Массив - это набор элементов, доступ к которым можно получить с помощью индекса.Например: массив x, который содержит элементы «u», «v», «w»:

   x = ['u', 'v', 'w']

Теперь вы можете получить доступ к элементам в этой коллекции, используя индекс или место элементав массиве (здесь отсчет начинается с нуля): x [0] - это элемент 'u', x [1] - это 'v' и т. д.

N в вашем примере таковомассив.И поскольку вы определили,

a, b, c, d, e, f, g, h = range(8)

a будет 0 (прочитайте определение функции range () Python, если вы не уверены, что она делает), b будет 1, c равно 2, d равно 3, e равно 4, а f равно 5.

Следовательно, N [a] = N [0] или первый элемент в массиве N, который является [b, c, d, e, f].И, как мы видели выше, [b, c, d, e, f] оценивается как [1, 2, 3, 4, 5].

Надеюсь, это поможет, извините, если вы уже зналинекоторые из этих аспектов.

1 голос
/ 03 марта 2011

range(8) возвращает [0, 1, 2, 3, 4, 5, 6, 7]

Таким образом, значение a равно 0, а b, c, d, e, f будет принимать значения 1, 2, 3, 4, 5 соответственно.

Когда вы получаете доступ к элементу списка N под индексом a, видя, что a имеет значение 0, вы получаете первый элемент списка, а именно [b, c, d, e, f].Если b, c, d, e, f равно 1, 2, 3, 4, 5, вы получите [1, 2, 3, 4, 5] назад.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...