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