Рассмотрим следующий код:Являются ли возможности списком списков python действительно асимметричными? не
>>> a = [0, 1, 2]
>>> for i in range(len(a)):
>>> print a[0:i]
[]
[0]
[0, 1]
Однако, когда я переверните код, чтобы взять кусочки от другого конца списка, он больше не работает:
>>> for i in range(len(a)):
>>> print a[-i:]
[0, 1, 2]
[2]
[1, 2]
Единственный способ сделать второй фрагмент кода для работы, похоже, заключается в том, чтобы повернуть вспять список, сделать это первым путем и отменить каждую часть перед ее печатью. Есть лучший способ сделать это? Я иногда использую этот тип цикла, и я бы хотел, чтобы мой код был как можно более чистым.
EDIT: В обоих циклах я повторяю слева направо. Если я переворачиваю направление итерации для второго цикла, он работает. Если бы я изменить направление итерации для первого цикла, она также имеет ту же икоту в качестве второго контура:
>>> for i in range(len(a)):
>>> print a[i-1::-1]
[2, 1, 0]
[0]
[1, 0]
Arg - Когда вы появились здесь? Теперь, как я должен FGITW что-нибудь? (+1 кстати) – mgilson
Он прячется в тени. xD – TerryA
Нельзя доверять войлочным ниндзям .. – 2013-03-23 23:04:32