Я построил его для вас здесь: https://codepen.io/anon/pen/PXvNvz
То, что вам, похоже, не хватает, - это класс таблицы:
[ 110]
Я также переместил ваш класс строк, у которого был div myLegend, в верхнюю часть документа, так как он не выглядит так, как будто он вам нужен ниже
РЕДАКТИРОВАТЬ:
Я построил я думаю, что вы пытаетесь сделать по-другому, что может быть лучше, вот как я бы это сделал: https://codepen.io/anon/pen/jXorXQ?editors=1000 [117 ]
Хорошо, я думаю, что это, вероятно, столь же хорошо, как я получу его. Благодаря Abgan для зажигания идеи. Это полагается на то, что Ни один в части не рассматривают, как будто это был недостающий параметр. Кто-либо получил что-нибудь лучше?
def getReversedList(aList, end, start, step):
return aList[end:start if start!=-1 else None:step]
править: проверьте на start==-1
, нет 0
Это все еще не идеально, потому что Вы ударяете обычное поведение-1. Кажется, что проблемой вот являются два перекрывающихся определения того, что, как предполагается, происходит. Кто бы ни побеждает, устраняет в других отношениях допустимые вызовы, ища другое намерение.
Это подвержено ошибкам для изменения семантики start
и stop
. Использовать None
или -(len(a) + 1)
вместо 0
или -1
. Семантика не произвольна. См. статью "Why numbering should start at zero" Edsger W. Dijkstra.
>>> a = range(10)
>>> start, stop, step = 4, None, -1
Или
>>> start, stop, step = 4, -(len(a) + 1), -1
>>> a[start:stop:step]
[4, 3, 2, 1, 0]
Или
>>> s = slice(start, stop, step)
>>> a[s]
[4, 3, 2, 1, 0]
Когда s
последовательность отрицательные индексы в s[i:j:k]
рассматриваются особенно:
Если
i
илиj
отрицательно, индекс относительно конца строки:len(s) + i
илиlen(s) + j
заменен. Но отметьте это-0
тихо0
.
именно поэтому len(range(10)[4:-1:-1]) == 0
потому что это эквивалентно range(10)[4:9:-1]
.
[ A[b] for b in range(end,start,stride) ]
Медленнее, однако можно использовать отрицательные индексы, таким образом, это должно работать:
[ A[b] for b in range(9, -1, -1) ]
Я понимаю, что это не использует части, но думало, что я предложу решение так или иначе, если использование частей специально для получения результата не является приоритетом.
Я полагаю, что следующее не удовлетворяет Вас:
def getReversedList(aList, end, start, step):
if step < 0 and start == 0:
return aList[end::step]
return aList[end:start:step]
или он?:-)
Но Вы не можете использовать это при хранении индексов в переменных, например.
Действительно ли это удовлетворительно?
>>> a = range(10)
>>> start = 0
>>> end = 4
>>> a[4:start-1 if start > 0 else None:-1]
[4, 3, 2, 1, 0]
Поскольку Вы говорите, что очень немного людей полностью понимают все, что можно сделать с расширенным разрезанием, поэтому если Вам действительно не нужна дополнительная производительность, я сделал бы это "очевидный" путь:
rev_subset = reversed(data[start:stop])
a[4::-1]
Пример:
Python 2.6 (r26:66714, Dec 4 2008, 11:34:15)
[GCC 4.0.1 (Apple Inc. build 5488)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a = list(range(10))
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[4:0:-1]
[4, 3, 2, 1]
>>> a[4::-1]
[4, 3, 2, 1, 0]
>>>
Причина состоит в том, что второй срок интерпретируется как, "в то время как не индексируют ==". Пропуск его "в то время как индекс в диапазоне".