Pythonic способ разделить список на первый и остальные?

Я думаю, в Python 3 я смогу сделать:

first, *rest = l

, это именно то, что я хочу, но я используя 2.6. Сейчас я делаю:

first = l[0]
rest = l[1:]

Это хорошо, но мне было просто интересно, есть ли что-нибудь более элегантное.

48
задан Georgy 4 April 2019 в 02:16
поделиться

2 ответа

first, rest = l[0], l[1:]

В основном то же самое, за исключением того, что это oneliner. Ассигнация кортежей.

Это немного длиннее и менее очевидно, но обобщено для всех итерабельных (вместо того, чтобы быть ограниченным sliceables):

i = iter(l)
first = next(i) # i.next() in older versions
rest = list(i)
37
ответ дан 7 November 2019 в 12:42
поделиться

Вы можете сделать

first = l.pop(0)

, а затем l будет остальным. Однако он изменяет ваш исходный список, поэтому, возможно, это не то, что вам нужно.

18
ответ дан 7 November 2019 в 12:42
поделиться