Pythonic способ разбить список на первый и отдохнуть?
Я думаю, что в Python 3 я смогу сделать:
first, *rest = l
что я и хочу, но я использую 2.6. Пока я делаю:
first = l[0]
rest = l[1:]
Это прекрасно, но мне просто интересно, есть ли что-то более элегантное.
Ответ 1
first, rest = l[0], l[1:]
В принципе то же самое, за исключением того, что это oneliner. Корреспондентские породы.
Это немного длиннее и менее очевидно, но обобщается для всех повторений (вместо ограничения на sliceables):
i = iter(l)
first = next(i) # i.next() in older versions
rest = list(i)
Ответ 2
Вы можете сделать
first = l.pop(0)
а затем l будет остальным. Он изменяет ваш первоначальный список, хотя, возможно, это не то, что вы хотите.
Ответ 3
Еще один, работающий с Python 2.7. Просто используйте промежуточную функцию. Логично, что новое поведение имитирует то, что произошло с передачей параметров функций.